5

私はこの問題を抱えています:私はPDOプリペアドステートメントを使用しています....変数をバインドしたいのですが、変数がNULLの場合、フィールドのデフォルト値をMYSQLに挿入する必要があります...

IFNULL(:User_Login__Is_Active、DEFAULT)を試していますが、次も試しました:COALESCE(:User_Login__Is_Active、DEFAULT)、同じエラー:PDOException:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064SQLにエラーがあります構文;

どうやってそれができる?

この例を見てください:

        $stmt = $this->pdo->prepare('INSERT INTO user_login
                                        ( User_Login__ID,
                                          User_Login__Is_Active,
                                          User_Login__Created_Date )
                                   VALUES ( 
                                          :User_Login__ID,
                                          IFNULL(:User_Login__Is_Active, DEFAULT),
                                          :User_Login__Created_Date )');


    $stmt->bindParam(':User_Login__ID', $this->User_Login__ID, PDO::PARAM_INT);
    $stmt->bindParam(':User_Login__Is_Active', $this->User_Login__Is_Active, PDO::PARAM_STR, 100);
    $stmt->bindParam(':User_Login__Created_Date', $this->User_Login__Created_Date, PDO::PARAM_STR, 100);


    $this->User_Login__Is_Active = null;
4

1 に答える 1

8

キーワードDEFAULTは式内では使用できません。式全体を置き換えることしかできません。

ただし、この機能DEFAULT()はどこでも使用できます。

したがってDEFAULT、例ではをに置き換えますDEFAULT(User_Login__Is_Active)

于 2011-02-27T03:04:30.793 に答える