2010-11-04 88 views
0

我想弄清楚如何將一個NULL值插入到新插入的行的列中。在列中插入NULL?

我正在「發佈圖標」,這將顯示線程列表上的線程的小圖標。圖標在表單中使用RADIO按鈕。默認情況下,它被設置爲無圖標。我想知道如何處理該單選按鈕的值以使其爲空?我嘗試將設置值設置爲NULL,但它只是將「NULL」一詞插入到數據庫中。

  $thread_sql = " 
      INSERT INTO forum_threads (
       user_id, 
       forum_id, 
       thread_postdate, 
       thread_lastpost, 
       thread_title, 
       thread_description, 
       thread_icon 
      ) VALUES (
       '$_SESSION[user_id]', 
       '$_GET[f]', 
       '$date', 
       '$date', 
       '$_POST[topictitle]', 
       '$_POST[topicdescription]', 
       '$_POST[posticon]' 
      ) 
     "; 
     $thread_query = @mysqli_query ($db_connect, $thread_sql); 
+4

你不說你正在使用什麼語言或框架。在直接的SQL中,您可以執行INSERT INTO my_table VALUES('a',NULL) – 2010-11-04 17:07:49

+0

這是更多的PHP問題,而不是mysql問題 – 2010-11-04 17:37:28

回答

1

就做這樣的事情(PDO):

$stmt = $db->prepare('INSERT INTO foo(bar) values (?);'); 
$stmt->execute(array($value=='NULL'? NULL,$value)); 

或者與mysql

mysql_query('INSERT INTO foo(bar) 
    values ('.($value=='NULL'? 'NULL',"'".mysql_real_escape_string($value)."'").')'; 
+0

這是解決此問題的更健壯和更安全的方法。 – 2010-11-04 17:36:05

4

隨着MySQL的:

insert into your_table (nulled_column) values (null); 

如果你得到一個'NULL'文字而不是一個null值,這可能是因爲你沒有從客戶端發出正確的指令(PHP,C#,Java程序)。您需要分享您用於插入的代碼才能獲得更多幫助。

UPDATE:

根據您最近編輯的問題,一下就當你插入NULL值擺脫''的。如果您使用'',那麼您將獲得'NULL'文字插入,如您所述。

我也建議你在MySQL中使用PreparedStatements以避免SQL注入攻擊。

-1

這工作。不得不使用中號

 if (isset($_POST['submit'])) { 
     $thread_sql = " 
      INSERT INTO forum_threads (
       user_id, 
       forum_id, 
       thread_postdate, 
       thread_lastpost, 
       thread_title, 
       thread_description, 
       thread_icon 
      ) VALUES (
       '$_SESSION[user_id]', 
       '$_GET[f]', 
       '$date', 
       '$date', 
       '$_POST[topictitle]', 
       '$_POST[topicdescription]', 
       IF('$_POST[posticon]'='NULL',NULL,'$_POST[posticon]') 
      ) 
     "; 
     $thread_query = @mysqli_query ($db_connect, $thread_sql); 
+3

這使您可以廣泛開放SQL注入,並且我將很樂意爲您的數據庫提供支持。使用預準備的語句消除你的用戶輸入。這是錯誤的。永遠不要,永遠,永遠直接從$ _SESSION和$ _POST變量的用戶輸入! – 2010-11-04 17:33:58