这让我感到非常困惑,因为我已经做了一百次,但现在它让我失望了。
我正在使用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 :(得分:1)
这是一个很长的镜头,但如果您最近对表进行了更改,则可能会遇到缓存架构的问题。尝试重新启动CF服务器,甚至只是在查询中添加一些空格。这是一篇包含更多信息的帖子。
http://www.coldfusionmuse.com/index.cfm/2005/4/29/dbschemaChange
答案 1 :(得分:1)
我在目前的代码库中得到了很多。添加cfqueryparams时,开发人员会假设值,有时预期的整数是空字符串。
如果空字符串/ null合适,请使用此http://www.carehart.org/blog/client/index.cfm/2007/3/5/cfqueryparam_null
在我的情况下,整数应该是一个整数,所以它通常是一个问题,如何设置该变量就像一个返回0记录的查询。