5

我有这个问题:我正在使用 PDO 准备语句....我想绑定一个变量但是如果变量为 NULL 它必须在 MYSQL 中插入字段的默认值...

我正在尝试使用 IFNULL(:User_Login__Is_Active, DEFAULT),我也尝试过:COALESCE(:User_Login__Is_Active, DEFAULT),同样的错误:PDOException: SQLSTATE[42000]: Syntax error or access contrast: 1064 You have an error in your SQL句法;

你怎么能那样做?

看这个例子:

        $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 回答