我使用bindParam为MySQL插入设置值。所讨论的列是INT(11)。它的默认值是NULL, NULL是允许的。然而,使用bindParam,它总是接收一个0。我已经确认我的$_POST['value']确实是空的。
if(isset($_POST['value'])){
$stmt = $db->prepare("INSERT INTO table (column) VALUES (:column)");
$stmt->bindParam(':column',$_POST['value'], PDO::PARAM_INT);
$stmt->execute();
}
如果POST值是'',它会一直插入'0'而不是NULL。
您应该将完整的大小写(答案和键入)与===
(Read More)
这很可能意味着你的值是而不是像你想象的那样 null
。
通过检查(下面的伪代码)来确保它是:
if(VALUE !=== NULL) {
value = null
}
你明白我的意思了吗?如果没有,就注释:-)
并且正如 aldanux
在他的评论中提到的那样,您必须将列用反引号括起来,因为它是保留字:
INSERT INTO table (`column`) VALUES (:column)