5

我正在从 MS Access 后端迁移到 mySQL。这曾经有效,但现在无效,我无法解决问题。

<cfargument required="false" name="expiry" type="any" default="" />


        <cfquery datasource='#arguments.dsn#'>      
            INSERT INTO users(expiry)
            VALUES (<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP"/>)
        </cfquery>  

数据库字段设置为日期时间,默认为 NULL

该参数是从一个空的表单字段填充的,或者是一个 javascript 验证的日期。它在空的表单域上窒息。

4

2 回答 2

6

在您弄乱 DSN 设置之前,我还会尝试将您更改<cfqueryparam>为以下内容:

<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP" null="#len(arguments.expiry) eq 0#" />

如果参数值为空字符串,这将传递一个真正的 null。

于 2010-06-22T15:42:39.813 回答
1

CF 对 MySQL 的 JDBC 驱动程序的实现不能很好地处理 NULL 日期。

您需要在 CF 管理员中将配置标志添加到您的 DSN 连接字符串设置(在高级下)

&zeroDateTimeBehavior=convertToNull

应该让你正确。

于 2010-06-22T15:38:48.537 回答