将NULL变量插入到数据库中
我将变量设置为NULL,即时尝试插入数据库,但由于某些原因,他们一直提交为'0'。我肯定,列im试图插入允许NULL,并且默认设置为NULL。继承人我的代码:将NULL变量插入到数据库中
$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());
Warning:
Please, don't use
mysql_*
functions for new code. They are no longer maintained and the community has begun the deprecation process . Instead you should learn about prepared statements and use either PDO or MySQLi .
IF你希望它是NULL
(你真的真的仍然希望在数据库中可以使用mysqli_*
)他以下几点:
$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ("
.(($insert===NULL)?
"NULL":
"'".mysql_real_escape_string($insert)."'").
")") or die(mysql_error());
但是,这可能会导致恶意SQL注入,是不是推荐。
所以:所有的一切,你应该用准备好的语句。
您可以使用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}";
}
这给出了语法错误 – 2012-07-09 15:31:17
错误@JonahKatz是什么? – Neal 2012-07-09 15:31:55
'分析错误:语法错误,意外的T_STRING' – 2012-07-09 15:32:23
尝试不带引号;
$query = mysql_query("INSERT INTO `table1` (`column1`) VALUES (".$insert.")") or die(mysql_error());
查询应该是;
INSERT INTO table1
(column1
)VALUES(NULL);
这给了我一个mysql错误 – 2012-07-09 15:29:48
好奇 - 错误是什么? – craig1231 2012-07-09 15:31:33
'你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在第1行附近'。,'24')'使用正确的语法。 – 2012-07-09 15:33:58
试试这个静态查询:
$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());
这可行,但我需要它是一个变量,因为有时变量不是null – 2012-07-09 15:30:08
好吧试试上面的代码.. – 2012-07-09 15:54:36
@MaheshMeniya感谢复制/粘贴:-P – Neal 2012-07-09 15:55:00
您是否尝试过用事先准备好的声明? 见[http://stackoverflow.com/questions/5329542/php-mysql-insert-null-values][1] [1]:http://stackoverflow.com/questions/5329542/php-mysql-insert-null-values – jle 2012-07-09 15:28:33
尝试在数据库表中将默认值设置为NULL。当你创建一个新的记录时,column1将自动为NULL。或者尝试将$ insert变量设置为null $ insert = null。问题是 - 为什么你需要它作为NULL? – comprex 2012-07-09 15:27:30