我使用bindParam设置MySQL插入的值。有问题的列是INT(11)。它的默认值为NULL,允许为null。但是,使用bindParam它总是收到0.我已经确认我的$ _POST ['值']确实是空的。
if(isset($_POST['value'])){
$stmt = $db->prepare("INSERT INTO table (column) VALUES (:column)");
$stmt->bindParam(':column',$_POST['value'], PDO::PARAM_INT);
$stmt->execute();
}
它不断插入' 0'如果POST值为'而不是NULL。
答案 0 :(得分:2)
您应该将完整案例(答案并输入)与===
(Read More)
这很可能意味着您的价值 null
就像您认为的那样。
确保通过检查( 下面的伪代码):
if(VALUE !=== NULL) {
value = null
}
但是你明白了吗?如果不只是评论: - )
正如评论中提到的aldanux
一样,你必须将列包装在反引号中,因为它是reserved word:
INSERT INTO table (`column`) VALUES (:column)