我将变量设置为NULL,我试图插入数据库,但由于某种原因,它们一直被提交为“0”。我很肯定,我试图插入的列允许NULL并且默认设置为NULL。继承我的代码:
$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());
答案 0 :(得分:5)
警告:
请不要将
mysql_*
函数用于新代码。它们已不再维护,社区已开始deprecation process。相反,您应该了解prepared statements并使用PDO或MySQLi。
如果,您希望它为NULL
(您真的真的 仍想使用mysqli_*
)在数据库中,您可以执行以下操作:
$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ("
.(($insert===NULL)?
"NULL":
"'".mysql_real_escape_string($insert)."'").
")") or die(mysql_error());
请参阅Bobby Tables
所以:总而言之,你应该使用准备好的陈述。
你可以这样使用MySQLi:
$dbHandle = new mysqli(...);
$query = "INSERT INTO `table1` (column1) VALUES (?)";
$statement = $dbHandle->prepare($query);
if($statement){
$statement->bind_param('s', $insert);
if(!$statement->execute()){
echo "Statement insert error: {$statement->error}";
}
$statement->close();
}
else {
echo "Insert error: {$dbHandle->error}";
}
答案 1 :(得分:1)
尝试使用静态查询:
$query = mysql_query("INSERT INTO `table1` (column1) VALUES (NULL)") or die(mysql_error());
使用变量:
$insert= NULL;
$insert = ($insert===NULL)? 'NULL' : "'$insert'";
mysql_query("INSERT INTO `table1` (column1) VALUES ($insert)") or die(mysql_error());
答案 2 :(得分:0)
尝试不加引号;
$query = mysql_query("INSERT INTO `table1` (`column1`) VALUES (".$insert.")") or die(mysql_error());
查询应该是;
INSERT INTO table1
(column1
)VALUES(NULL);