如何插入值或 NULL



可能的重复项:
将 NULL 变量插入数据库

我有一个带有列的表(日志):

秒数: 比金特(20) 无符号空

地址: 瓦尔查尔(15) 空

问题是,每当变量被赋予值 NULL 时,它们都会作为 IPAddress 列的空字符串插入到列中,作为秒列的空字符串插入 0,而不是 NULL。

//PHP 5.3.9//
if(isset($_POST['sec']))
        $seconds = mysql_real_escape_string($_POST['sec']);
else
    $seconds = NULL;
if(isset($_POST['ip']))
    $ipaddress = mysql_real_escape_string($_POST['ip']);
else
    $ipaddress = NULL;
$query = mysql_query("INSERT INTO log (Seconds, IPAddress) VALUES('".$seconds."', '".$ipaddress."')", $DbConnectionMyDb);

我已经在谷歌上搜索了所有内容,但所有的答案都假设我已经知道变量$sec$ip是否会为空。就我而言,这取决于开机自检数据。

任何帮助都深表感谢。谢谢。

"" !== NULL
"NULL" !== NULL
NULL === NULL

您正在插入""

在将变量组合到字符串的那一刻,变量中的 NULL 值将强制转换为空字符串。您需要构造它实际读取的查询:

VALUES (NULL, NULL)

而不是

VALUES ("", "")

你可以通过以下方式做到这一点:

if (is_null($seconds)) $seconds='NULL'; else $seconds='"'.$seconds.'"';
if (is_null($ipaddress)) $ipaddress='NULL'; else $ipaddress='"'.$ipaddress.'"';
$query = mysql_query("... VALUES(".$seconds.", ".$ipaddress.")", ...);
但是,从长远来看,将

某种数据库库或PDO与预准备语句一起使用,从而抽象出这些类型的任务会更好。

相关内容

  • 没有找到相关文章

最新更新