我有一個表(記錄)使用列:
秒: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。'')不帶引號。 –