包含if语句的查询的cfqueryparam

时间:2012-06-11 22:18:13

标签: coldfusion cfquery

如何在这行代码中使用cfqueryparam?

SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>#FORM.mailing_list#<CFELSE>0</CFIF>

3 个答案:

答案 0 :(得分:4)

像这样:

SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>
    <cfqueryparam value="#FORM.mailing_list#" cfsqltype="cf_sql_integer" />
<CFELSE>
    0
</CFIF>


在最近的CFML引擎上,您可以使用三元条件运算符:

SET mailing_list = <cfqueryparam value="#IsDefined("FORM.mailing_list") ? FORM.mailing_list : 0#" cfsqltype="cf_sql_integer" />

(虽然这里可读性较差。)


最好的办法是最有可能将它放在查询之上,并且完全避免任何...

<cfparam name="Form.mailing_list" default="0" />

...

SET mailing_list = <cfqueryparam value="#FORM.mailing_list#" cfsqltype="cf_sql_integer" />

答案 1 :(得分:2)

你只需要使用两个独立的cfqueryparam

SET mailing_list = 
<cfif StructKeyExists(form,'mailing_lis't)>
  <cfqueryparam cfsqltype="cf_sql_varchar" value "#FORM.mailing_list#" />
<cfelse>
  0
</cfif>

答案 2 :(得分:0)

我通常使用IIF作为简短的IF语句:

SET mailing_list = <cfqueryparam value="#iif(IsDefined("form.mailing_list"), form.mailing_list, 0)#" cfsqltype="cf_sql_integer" />

否则我更喜欢“漫长而干净”的方式:

<CFIF IsDefined("FORM.mailing_list")>
   SET mailing_list = <cfqueryparam value="#FORM.mailing_list#" cfsqltype="cf_sql_integer" />
<CFELSE>
   SET mailing_list = <cfqueryparam value="0" cfsqltype="cf_sql_integer" />
</CFIF>