我将浏览Values表的列val中的所有记录,并将任何绝对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>
关于如何修复它的任何想法?
答案 0 :(得分:2)
我要看的第一件事是你在Valdedit的CFSET末尾有一个半冒号。 这将首先爆发。
然后检查您的代码,看它是否会给您带来同样的错误。
您可能需要考虑的最佳做法是,在输出值时只使用#,所以
<cfset val = getVals.vals>
就足够了。
接下来我要看的是你的声明。 这假定您的所有值都具有ID,表中的记录数为1。 如果不是这样,您可能需要将其更新为
where ID = #getVals.ID#
希望这会有所帮助。 当我写下来的时候,其他所有人都说了同样的话:P
答案 1 :(得分:0)
我个人不会直接更新查询列的值。对我而言,令人困惑的是究竟发生了什么。我一直采用的方法是使用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)>