1

这让我非常困惑,因为我已经这样做了一百次,但现在它让我失望了。

我正在使用 CF 参数进行基本查询更新,并且表的主键正在传递一个空值,导致严重失败。

即使我在 中输入硬编码的数字#form.id placeholder#,我也会得到:

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)。

4

2 回答 2

1

这是一个漫长的过程,但是如果您最近对表进行了更改,则缓存架构可能会出现问题。尝试重新启动 CF 服务器,甚至只是在查询中添加一些空格。这是一个包含更多信息的帖子。

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

于 2012-03-31T12:53:02.213 回答
1

我在当前的代码库中得到了很多。添加 cfqueryparams 时,开发人员假定了这些值,有时预期的整数是空字符串。

如果空字符串/null 是合适的,请使用此http://www.carehart.org/blog/client/index.cfm/2007/3/5/cfqueryparam_null

在我的情况下,整数应该是一个整数,所以通常是如何设置该变量的问题,就像一个返回 0 记录的查询一样。

于 2012-03-31T14:42:04.730 回答