PHP:将变量设置为NULL并将NULL写入MySQL

PHP:将变量设置为NULL并将NULL写入MySQL,php,mysql,mysqli,Php,Mysql,Mysqli,多年来,我有一个简单的问题: 如何将值设置为NULL并将NULL写入MySQL $var = trim(mysqli_real_escape_string($_POST["input_from_user"])); if(strlen($var) < 1) { $newvar = NULL; } else { $newvar = $var; } …总是将空值写入MySQL表,但不能为NULL! 当然:字段“var”在MySQL中声明为允许“NULL”。对于PDO,您可以使用bindValu

多年来,我有一个简单的问题: 如何将值设置为NULL并将NULL写入MySQL

$var = trim(mysqli_real_escape_string($_POST["input_from_user"]));
if(strlen($var) < 1) {
$newvar = NULL;
}
else {
$newvar = $var;
}
…总是将空值写入MySQL表,但不能为NULL!
当然:字段“var”在MySQL中声明为允许“NULL”。

对于PDO,您可以使用
bindValue()
方法来准备语句

bindValue(':param',null,PDO::param_INT)


您可以在mysqli中找到如何实现这一点。首先,您必须为所有数据库交互使用准备好的语句。使用时,它们会将您的空值传递到数据库,无论是使用mysqli还是PDO。

尝试使用

"INSERT INTO `table` (`var`) VALUES (" . (is_null($newvar)) ? "NULL" : $newvar . ")";

试着用五个被否决的答案,这真是个问题。@AlanMachado其中一个确实回答了这个问题,但不是每个人都能马上看到。这在很多方面都很糟糕。“NULL”=为我的朋友设置空值,这就是为什么它有效,我的朋友。查询解析器可以看到它,而不是phpvariable@JulioSoares我花了一段时间才发现这确实有效。可惜的是,几乎没有人能把注意力的广度提高到也能看到它。我建议您批准我的编辑,这样每个人都可以看到这实际上是可行的。即使Robert错了,你也不应该报复downvote,永远。@Robert引号是围绕字符串NULL的,这些引号不会出现在查询字符串中。这个答案其实是最简单最正确的。请解释一下?
"INSERT INTO `table` (`var`) VALUES (" . (is_null($newvar)) ? "NULL" : $newvar . ")";