小编mpa*_*aul的帖子

Coldfusion更新查询在变量中使用语句时会引发错误

尝试使用包含逗号分隔的列更新集的变量.该变量最终包含有效的SQL(或更准确地说是有效的Coldfusion语法),但查询引发错误:[Macromedia] [SQLServer JDBC Driver] [SQLServer]'<'附近的语法不正确.

我从一个初始列开始更新:

<cfset sqlString = myColumn & ' = <cfqueryparam value="#myValue#" cfsqltype="#myDataType#" null="#NOT len(trim(myValue))#">'>
Run Code Online (Sandbox Code Playgroud)

然后循环执行一些表单元素:

<cfset sqlString = sqlString & ', ' & myColumn & ' = <cfqueryparam value="#myValue#" cfsqltype="#myDataType#" null="#NOT len(trim(myValue))#">'>
Run Code Online (Sandbox Code Playgroud)

我当然最终在sqlString中使用了一个完整的字符串,但为了便于阅读,它包含这样的内容:

id = <cfqueryparam value="123" cfsqltype="cf_sql_integer">,
csp = <cfqueryparam value="5" cfsqltype="cf_sql_integer">,
Q185 = <cfqueryparam value="" cfsqltype="cf_sql_integer" null="YES">,
Q3 = <cfqueryparam value="" cfsqltype="cf_sql_integer" null="YES">,
Q177 = <cfqueryparam value="" cfsqltype="cf_sql_date" null="YES">
Run Code Online (Sandbox Code Playgroud)

所以我尝试在这样的更新查询中使用它:

<cfquery name="update_answers" datasource="#application.datasource#">
   UPDATE answers
   SET    #PreserveSingleQuotes(sqlString)#                                                     
   WHERE  rec_id = #id#
</cfquery>
Run Code Online (Sandbox Code Playgroud)

我在使用和不使用PreserveSingleQuotes功能的情况下尝试过此功能都无济于事.

如果我输出sqlString的内容并将其直接粘贴到查询中,它就可以正常工作: …

sql-server coldfusion

3
推荐指数
1
解决办法
112
查看次数

标签 统计

coldfusion ×1

sql-server ×1