我有一个表(记录)使用列:
秒:BIGINT(20)UNSIGNED NULL
ip地址:VARCHAR( 15)NULL
pro瑕疵是,只要变量的值为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);
我已经找遍了谷歌,但所有的答案假设我已经知道变量$秒和$ IP是否要空,也可以不是。在我看来,这取决于POST数据。
任何帮助深表谢意。 谢谢。
使用占位符。他们会照顾'NULL'的处理..并照顾SQL注入*而不需要手动调用某个丑陋的外观函数。 (问题是'''',一个字符串,而不是'NULL'被用作插入的值。) – 2012-11-13 18:24:04
因为它们是字符串,当你得到它们,并且因此你对待它们(mysql_real_escape_STRING) –
你的PHP将字符串定义为NULL,这与mysql NULL不同。在你的查询中,你应该检查(IE if语句)以查看变量是否为NULL,如果是,那么它应该看起来像这样:VALUES(NULL,'“。$ ipaddress。'')不带引号。 –