我正在遍历Values表的列中的所有记录,并将任何绝对urls转换为相对urls。我得到了这个错误
[Macromedia][SQLServer JDBC Driver][SQLServer]Incorrect syntax near '='.在这段代码的倒数第三行:
<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>对如何修复它有什么想法吗?
发布于 2013-04-25 03:15:43
我要看的第一件事是,在ValEdited的CFSET的末尾有一个分号。那将首先爆炸。
然后检查你的代码,看看它是否会给你同样的错误。
您可能需要考虑的最佳实践是,只有在输出值时才使用#...所以
<cfset val = getVals.vals> 就足够了。
接下来我要看的是where语句。这假设您的所有值都有ID,1表示表中的记录数。如果不是这样,您可能需要将其更新为
where ID = #getVals.ID#希望这能有所帮助。到我写这篇文章的时候,其他人几乎都说了同样的话:
发布于 2013-04-25 21:01:15
就我个人而言,我不会直接更新查询列的值。对我来说,这让我对到底发生了什么感到困惑。我通常采用的方法是使用QueryAddColumn()向查询中添加另一个列。
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_m-r_16.html
这使您不仅可以将所需的更改作为新列在查询中使用,还可以保留原始列,以便您可以更轻松地进行调试。要添加新列,只需执行以下操作:
<cfquery name="getVals" datasource="#dataBase#">
Select vals
FROM Values
order by id
</cfquery>
<cfset newVals = []>
<cfloop query="getVals">
<cfset temp = REReplace(
val,
'"(https?:\/\/)?(www\.)?(example\.com)(\/)?"',
"'index.php'",
'ALL'
)>
<cfset ArrayAppend(newVals, temp)>
</cfloop>
<cfset QueryAddColumn(getVals, "newVals", "Varchar", newVals)>https://stackoverflow.com/questions/16200118
复制相似问题