将NULL变量插入数据库

时间:2012-07-09 15:23:03

标签: php mysql null

我将变量设置为NULL,我试图插入数据库,但由于某种原因,它们一直被提交为“0”。我很肯定,我试图插入的列允许NULL并且默认设置为NULL。继承我的代码:

$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());

3 个答案:

答案 0 :(得分:5)

  

警告:

     

请不要将mysql_*函数用于新代码。它们已不再维护,社区已开始deprecation process。相反,您应该了解prepared statements并使用PDOMySQLi

如果,您希望它为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注入,并且推荐。

请参阅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 table1column1)VALUES(NULL);