2014-09-25 159 views
0

我知道這個問題已經被問過。我發現帖子,但是,它並沒有解決我的問題,因爲我的專欄確實允許null。MySQL將NULL值插入到INT列中

我想插入一個NULL值到我的整數列。

if ($startYear == "") { 
    $startYear = NULL; 
} 

mysqli_query($con, "INSERT INTO Application (startYear) VALUES ('".$startYear."')"); 

你問之前,我已籤,如果$startYear是有史以來空的,它是,所以這應該工作。

當我運行這個查詢時,它輸入一個0到數據庫行中。它不會像我想要的那樣插入NULL

這裏是我列的結構:

http://i.imgur.com/XuWq9Km.png

一個重要的事情是,我不能修改列的結構。它是禁止的。

在此先感謝。

回答

0

問題是你實際上並沒有在查詢中插入字符串'NULL',而是一個php null,它會讓你的查詢插入空字符串,這會在數據庫中被轉換爲0。

你需要做到這一點:

mysqli_query($con, "INSERT INTO Application (startYear) VALUES (NULL)"); 
+0

明白了, 謝謝。 – Nic 2014-09-25 18:33:00

+0

@Nic這是否正確回答您的問題?如果是這樣,請將其標記爲正確。如果沒有,是否有更好的答案? – Ray 2014-10-13 19:51:17

0

你插入一個PHP空值,這在字符串上下文中使用時,成爲一個空字符串 - 這正是最初。你要插入一個文本字符串以字母nu,, l`這個工作:

if ($startYear == '') { 
    $startYear = 'NULL'; // string null 
} 
$sql = "INSERT ..... VALUES ($startYear)"; 

將產生

INSERT ... VALUES (NULL) 

要展開:

$foo = null; // actual PHP null value 
    $bar = "$foo"; // insert this php null into a string 
    echo strlen($bar); // returns 0 

    $foo = 'null' // string with 4 letters: n,u,l,l 
    $bar = "$foo"; 
    echo strlen($bar); // returns 4 
相關問題