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>  

データベース フィールドは datetime に設定され、デフォルトは 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 admin の DSN 接続文字列設定 (詳細下) に構成フラグを追加する必要があります。

&zeroDateTimeBehavior=convertToNull

あなたを正しく設定する必要があります。

ロブ

于 2010-06-22T15:38:48.537 に答える