1

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>

それを修正する方法についてのアイデアはありますか?

4

2 に答える 2

2

最初に確認することは、ValEdited の CFSET の末尾にセミコロンがあることです。それが最初に爆発します。

次に、コードをチェックして、同じエラーが発生するかどうかを確認します。

あなたが考慮したいかもしれないベストプラクティスは、値を出力しているときだけ # を使うことです...

<cfset val = getVals.vals> 

十分なものです。

次に注目するのは、あなたの where ステートメントです。これは、すべての値に ID (1 からテーブル内のレコード数まで) があることを前提としています。そうでない場合は、これを次のように更新する必要があります。

where ID = #getVals.ID#

お役に立てれば。私がそれを書いた頃には、他の誰もがほとんど同じことを言っていました:P

于 2013-04-24T19:15:42.810 に答える
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)>
于 2013-04-25T13:01:14.980 に答える