【发布时间】:2013-04-24 19:02:15
【问题描述】:
我正在检查 Values 表的 vals 列中的所有记录,并将任何绝对 url 转换为相对 url。我收到此错误
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near '='.
在这段代码的第 3 行到最后一行:
<cfquery name="getVals" datasource="#dataBase#">
Select vals
FROM Values
</cfquery>
<cfloop
query = "getVals">
<cfset val=#vals#>
<cfset valEdited= REReplace(
val,
'"(https?:\/\/)?(www\.)?(example\.com)(\/)?"',
"'index.php'",
'ALL'
)>
<cfquery name="update" datasource="#dataBase#">
UPDATE Values
SET vals = <cfqueryPARAM value = #valEdited#>
WHERE ID = <cfqueryPARAM value = #getVals.currentRow#>
</cfquery>
</cfloop>
关于如何解决它的任何想法?
【问题讨论】:
-
尝试使用
<cfqueryparam>,它不仅更安全,而且还转义了 varchar 字符串以确保它能够正常工作。vals =之后不需要单引号 -
rereplace行的末尾还有一个额外的分号。 -
WHERE ID = #getVals.currentRow# 您应该使用唯一记录
ID,而不是查询行号。同样如上所述,在 both 变量上使用cfqueryparam。 -
另外,您不应该真正查询
select *。最好只指定您需要的实际列。 -
(编辑)您能发布实际代码和完整错误消息吗?这不可能是实际查询,因为
values是保留字。因此,SQL 无论如何都不会正常运行,除非转义表名。另外,update中有一个错字。
标签: coldfusion cfquery cfloop