2016-07-26 67 views
0

我試圖設置一個變量爲NULL,如果它是空的(在表單輸入後)並更新我的數據庫,但它始終將NULL放在NULL的字段中。 (字段設置爲整數/ NULL)我也試過$ eloleg =「NULL」,但是這也沒有工作。如何使用變量將mysql中的值設置爲NULL?

 if (!empty($_POST["eloleg"])) { 
      $eloleg = mysql_real_escape_string($_POST["eloleg"]); 
     } 
     else { 
      $eloleg = NULL; 
     } 

     mysqli_query($connection, "UPDATE $table SET eloleg='$eloleg' WHERE date='$eredeti_date'"); 
+5

使用參數綁定。否則,你可以開放SQL注入。空值不應該被引用,但綁定將爲您處理。 – aynber

+1

什麼是數據庫架構,它接受NULL值?此外,這裏的一個主要問題是您正在混合使用MySQL API,我們不知道您使用哪一個來連接。 –

+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman

回答

0

我想你想做到這一點:

$eloleg = 'NULL'; 

mysqli_query($connection, "UPDATE $table SET eloleg=$eloleg WHERE date='$eredeti_date'"); 

但正如其他人所說的,你應該使用一個參數化的API來構建查詢,以避免SQL注入以及格式化陷阱。

+0

我想你在第一條語句 – Panda

+3

和OP混合API之後錯過了一個分號;這可能是爲什麼它首先失敗了,或者正在爲它做出貢獻。 –

+2

@luweiqi我不是經過培訓的PHP人員,但是我可以看到'NULL'在實際查詢中被引號轉義,這顯然是錯誤的。 –

相關問題