bindParam and NULL int values


bindParam and NULL int values

我使用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)