【发布时间】:2012-06-11 22:18:13
【问题描述】:
你如何在这行代码中使用 cfqueryparam?
SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>#FORM.mailing_list#<CFELSE>0</CFIF>
【问题讨论】:
标签: coldfusion cfquery
你如何在这行代码中使用 cfqueryparam?
SET mailing_list = <CFIF IsDefined("FORM.mailing_list")>#FORM.mailing_list#<CFELSE>0</CFIF>
【问题讨论】:
标签: coldfusion cfquery
像这样:
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" />
【讨论】:
您只需使用两个单独的 cfqueryparam
SET mailing_list =
<cfif StructKeyExists(form,'mailing_lis't)>
<cfqueryparam cfsqltype="cf_sql_varchar" value "#FORM.mailing_list#" />
<cfelse>
0
</cfif>
【讨论】:
我通常使用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>
【讨论】:
de() 中,以免表单字段不存在时出错。