2012-07-09 59 views
0

我將變量設置爲NULL,即時嘗試插入數據庫,但由於某些原因,他們一直提交爲'0'。我肯定,列im試圖插入允許NULL,並且默認設置爲NULL。繼承人我的代碼:將NULL變量插入到數據庫中

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

您是否嘗試過用事先準備好的聲明? 見[http://stackoverflow.com/questions/5329542/php-mysql-insert-null-values][1] [1]:http://stackoverflow.com/questions/5329542/php-mysql-insert-null-values – jle 2012-07-09 15:28:33

+0

嘗試在數據庫表中將默認值設置爲NULL。當你創建一個新的記錄時,column1將自動爲NULL。或者嘗試將$ insert變量設置爲null $ insert = null。問題是 - 爲什麼你需要它作爲NULL? – comprex 2012-07-09 15:27:30

回答

5

Warning:

Please, don't use mysql_* functions for new code. They are no longer maintained and the community has begun the deprecation process . Instead you should learn about prepared statements and use either PDO or MySQLi .

IF你希望它是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}"; 
     } 
+0

這給出了語法錯誤 – 2012-07-09 15:31:17

+0

錯誤@JonahKatz是什麼? – Neal 2012-07-09 15:31:55

+0

'分析錯誤:語法錯誤,意外的T_STRING' – 2012-07-09 15:32:23

0

嘗試不帶引號;

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

查詢應該是;

INSERT INTO table1column1)VALUES(NULL);

+0

這給了我一個mysql錯誤 – 2012-07-09 15:29:48

+0

好奇 - 錯誤是什麼? – craig1231 2012-07-09 15:31:33

+0

'你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行附近'。,'24')'使用正確的語法。 – 2012-07-09 15:33:58

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()); 
+0

這可行,但我需要它是一個變量,因爲有時變量不是null – 2012-07-09 15:30:08

+0

好吧試試上面的代碼.. – 2012-07-09 15:54:36

+0

@MaheshMeniya感謝複製/粘貼:-P – Neal 2012-07-09 15:55:00