2013-10-29 49 views
-1

我用下面的代碼在MySQL中插入數據:數據插入,而字段爲空

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
$insertSQL=$conn->prepare("INSERT INTO table (ID, COUNTRY, POSTAL_CODE, ADDRESS, PHONE, FAX) VALUES (:a, :b, :c, :d, :e, :f)"); 
    $insertSQL->bindValue(':a', $_POST['ID'], PDO::PARAM_INT); 
    $insertSQL->bindValue(':b', $_POST['COUNTRY'], PDO::PARAM_STR); 
    $insertSQL->bindValue(':c', $_POST['POSTAL_CODE'], PDO::PARAM_INT); 
    $insertSQL->bindValue(':d', $_POST['ADDRESS'], PDO::PARAM_STR); 
    $insertSQL->bindValue(':e', $_POST['PHONE'], PDO::PARAM_INT); 
    $insertSQL->bindValue(':f', $_POST['FAX'], PDO::PARAM_INT); 
$insertSQL->execute(); 
} 

的問題是,當我不文本字段電話和地址都輸入值,他們在我的數據庫中設置爲0而不是NULL! 我該如何解決這個問題?

回答

1

發生這種情況的原因是,如果您未在字段中填充任何內容,則會收到一個空字符串。這是不一樣的NULL,將導致PDO將其轉換爲給定類型PDO::PARAM_INT

要插入NULL,你必須通過NULL到PDO:

$insertSQL->bindValue(
    ':d', 
    $_POST['PHONE'] ?: NULL, 
    PDO::PARAM_INT 
); 
+0

這個我第一次看到這樣的事情,它完美作品 – Anibel

+0

沒有什麼說「這工作完美」超過[公認的答案](http://stackoverflow.com/about)。 – NDM

+0

你明白了@NDM – Anibel