2012-03-31 18 views
1

これは私がこれを百回行ったように私を大きく困惑させています。CFQUERYPARAMで渡された値が空として扱われています

CF paramsを使用して基本クエリを更新していますが、テーブルの主キーが空の値を渡しているため、重大なエラーが発生します。私は#form.id placeholder#にハードコードされた番号を入力した場合でも

、私はこれを取得:

ここ
 
Invalid data '' for CFSQLTYPE CF_SQL_NUMERIC. 

は私のコードベース

<cfquery name="updateIdea" datasource="#request.db#"> 
      UPDATE freshideas 
      SET subject = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.subject#" null="no" />, 
       content = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.content_text#" />, 
       postmonth = <cfqueryparam cfsqltype="cf_sql_numeric" value="#form.postmonth#" />, 
       postyear = <cfqueryparam cfsqltype="cf_sql_numeric" value="#form.postyear#" />, 
       imglink = <cfqueryparam cfsqltype="cf_sql_varchar" value="#image#" />, 
       oindex = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.oindex#" null="no" maxlength="3" /> 
      WHERE id = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.id#" null="no" /> 
     </cfquery> 

挿入は正常に動作し、列IDがAUTO_INCREMENTのintであります(5)。

+0

"id"タイプは 'cf_sql_integer'です。したがって、 'form.postmonth'や' form.postyear'のように、他のフィールドの1つを指している 'cf_sql_numeric'というエラーメッセージが表示された場合です。 – Leigh

+0

INSERTのcfqueryparamタグはupdate文と同じで、問題はありません。 –

+1

私はあなたのクエリの名前を取り除くことをお勧めします。また、null = "no"を取り除く。それを試してください。私は朝起きてこの問題を解決するのに役立ちます。 –

答えて

1

最近の変更を行った場合は、スキーマのキャッシュに問題がある可能性があります。 CFサーバーを再起動するか、クエリーにスペースを追加してみてください。ここに、より多くの情報を持つ投稿があります。

http://www.coldfusionmuse.com/index.cfm/2005/4/29/dbschemaChange

+0

記事をありがとうが、私はMSSQLではなくMySQLを使用している。 –

1

私は私の現在のコードベースでこの多くを取得します。 cfqueryparamsを追加するとき、開発者は値を仮定し、時には予想される整数は空の文字列です。

空の文字列/ nullは私の場合には、このhttp://www.carehart.org/blog/client/index.cfm/2007/3/5/cfqueryparam_null

適切な使用であれば、それは通常、その変数が0レコードを返すクエリのように設定し取得する方法に問題があるので、整数は整数されている必要があります。