2012-03-31 28 views
1

這讓我感到莫名其妙,因爲我已經做了這麼多次,但現在卻讓我失望了。傳遞的值在CFQUERYPARAM中被視爲空

我正在使用CF參數進行基本的查詢更新,並且表的主鍵傳入一個空值,導致嚴重故障。

即使我進入一個硬編碼號爲#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'。因此,如果錯誤消息顯示「cf_sql_numeric」指向其他字段之一是問題,如「form.postmonth」或「form.postyear」。 – Leigh 2012-03-31 03:25:16

+0

INSERT的cfqueryparam標記與update語句相同,並且沒有問題。 – 2012-03-31 03:33:22

+1

我建議擺脫你的查詢名稱。另外,擺脫null =「否」。試試看。我將在早上工作,並可以幫助你解決這個問題。 – 2012-03-31 03:33:45

回答

1

這是一個長鏡頭,但如果您對錶格進行了近期更改,則可能會在緩存模式時遇到問題。嘗試重新啓動您的CF服務器,甚至只是爲查詢添加一些空格。這裏有一個帖子,更多的信息。

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

+0

感謝您的文章,但我使用MySQL,而不是MSSQL。 – 2012-03-31 14:06:33

1

我得到這個很多在我目前的代碼庫。當添加cfqueryparams時,開發人員會採用這些值,有時候預期的整數是一個空字符串。

如果空字符串/ null是適當的使用這種http://www.carehart.org/blog/client/index.cfm/2007/3/5/cfqueryparam_null

在我的情況下,整數應該是一個整數,所以它通常是如何變量是越來越像設置的查詢返回0記錄的問題。