2010-12-20 15 views
0

私はcoldfusionを使用して、構造体の内容(キーと値のペア)をデータベーステーブルに挿入しています。これは私のコードです:これは十分に簡単なようだ私のシンプルなインサートには何が問題なのですか?

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES (#ID#, #results[ID]#) 
    </cfquery> 
</cfloop> 

...しかし、私は次のエラー取得しています:

Incorrect syntax near 'VA'. 

任意のアイデア?

答えて

10

あなたは本当にあまりにもあなたのデータをパラメータ化を考えるべきです。

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES (
      <cfqueryparam cfsqltype="cf_sql_varchar" value="#ID#">, 
      <cfqueryparam cfsqltype="cf_sql_varchar" value="#results[ID]#">) 
    </cfquery> 
</cfloop> 
+0

スティーブの指摘によれば、cfqueryparamを使うことはあなたのために大いに役立ちます。それはあなたのための文字列 'VA'を引用している間、悪いものの全体の束からあなたを保護しています。イントラネットアプリケーションでさえ、あなたはこれをしたいと思っています。 –

+0

良い点...ありがとう。私は間違いなくこれを試してみます。私はそれからの長い休憩の後cfに戻ってきているので、私が忘れてしまったことがたくさんあります:) – froadie

2

私はそれを解決しているかもしれないと思う...引用符を忘れてしまった、と彼らは両方のvarchar型のフィールドです: -/

<cfloop collection="#results#" item="ID" > 
    <cfquery name="insertStuff" datasource="myDataSource"> 
     INSERT INTO web..Stuff (ID, Name) 
     VALUES ('#ID#', '#results[ID]#') 
    </cfquery> 
</cfloop> 
+0

私はまだCFQueryParamを実行します。 –

+0

完全合意。 CFQueryParamは間違いなくベストプラクティスです。私はCFEclipseのスニペットを使用してそれらを挿入します(入力するのは苦痛かもしれません)。 –

関連する問題