【问题标题】:pdo prepared statement insert DEFAULT when the variable in BindParam is null当 BindParam 中的变量为空时,pdo 准备好的语句插入 DEFAULT
【发布时间】:2011-07-05 01:46:21
【问题描述】:

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

我正在尝试 IFNULL(:User_Login__Is_Active, DEFAULT), 我也试过: COALESCE(:User_Login__Is_Active, DEFAULT), 同样的错误: PDOException: SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 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;

【问题讨论】:

    标签: insert default-value dbo sqlbindparameter


    【解决方案1】:

    关键字DEFAULT不能在表达式中使用,它只能替换整个表达式。

    但是,DEFAULT() 函数可以在任何地方使用。

    因此,将示例中的 DEFAULT 替换为 DEFAULT(User_Login__Is_Active)

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2021-08-15
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      相关资源
      最近更新 更多