2011-02-27 88 views
4

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

我试图用 IFNULL(:User_Login__Is_Active,默认值), 我也试过: COALESCE(:User_Login__Is_Active,默认值), 同样的错误: 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; 

回答

6

关键字DEFAULT不能表达内使用,它只能更换整个表达。

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

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

+0

漂亮...谢谢.. :) – Samuele 2011-02-27 14:27:59