我正在尝试使用cfquery(如下面的
)触发更新查询 <cfquery name = "UpdateRecord"
dataSource = #DATASOURCE#
username = #DBUSER#
password = #DBPASSWORD#
result="updateResult" >
update table1
set field1=( select field1 from table2 where field3='Some Value')
where field4='someothervalue'
</cfquery>
<cfdump var="#UpdateResult#">
但是,当我执行此页面时,页面没有加载,在状态栏中我可以看到它的加载很长时间。
但如果我使用任何简单的更新查询,如
update table1 set field1='abc' where field4='someothervalue'
然后它工作正常
任何人都知道如何使用cfquery执行上述查询?
由于
答案 0 :(得分:2)
如果您可以尝试使用cfqueryparam作为您的值,则不必使用PreserveSingleQuotes。它还可以防止SQL注入。
答案 1 :(得分:1)
您是否尝试在PreserveSingleQuotes中包装更新?
<cfquery name = "UpdateRecord"
dataSource = #DATASOURCE#
username = #DBUSER#
password = #DBPASSWORD#
result="updateResult" >
#PreserveSingleQuotes(update table1 set field1=( select field1 from
table2 where Field3='Some Value') where field4='someothervalue')#
</cfquery>
答案 2 :(得分:0)
您确定您的subselect语句返回1行。这取决于您运行的RDMS,但我很确定并非所有数据库都支持此功能。我首先尝试直接在您的数据库上运行查询,看它是否正确运行。
您可以通过在查询末尾添加限制1来强制sql仅返回1行,或者如果您的数据库不支持在汇总中包装field1。
SELECT MAX(field1) FROM table2 WHERE field3 = 'Some Value'
注意:如果您的String值是来自用户的参数,则应确保使用cfqueryparam来防止SQL注入。