2014-07-21 39 views
0

我正在使用bindParam來設置MySQL插入的值。有問題的列是一個INT(11)。它有一個默認的NULL,允許null。但是,使用bindParam它總是會收到一個0.我已經確認我的$ _POST ['value']確實爲null。bindParam和NULL int值

if(isset($_POST['value'])){ 
    $stmt = $db->prepare("INSERT INTO table (column) VALUES (:column)"); 
    $stmt->bindParam(':column',$_POST['value'], PDO::PARAM_INT); 
    $stmt->execute(); 
} 

如果POST值是'',它會一直插入'0'而不是NULL。

+1

你有匹配的值和類型(' ===')? – Darren

+0

http://stackoverflow.com/a/1391801/658086 –

+3

'column'是mysql中的一個保留字 - > http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html – aldanux

回答

2

你應該完全匹配的情況下與===Read More)(答案和類型

這很可能意味着你的價值是不null像你假定它是。

確保它是通過檢查(以下僞代碼):

if(VALUE !=== NULL) { 
    value = null 
} 

但你的想法呢?如果不只是:-)


發表意見,併爲aldanux在他的評論中提到的,你必須包裝在反引號中的列,因爲它是一個reserved word

INSERT INTO table (`column`) VALUES (:column) 
+1

對不起,只是爲了這個例子。 – user3822370

+0

@ user3822370完美無瑕:) – Darren