-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();
}

問題は、テキスト フィールド PHONE と ADDRESS の両方に値を入力しないと、データベースで NULL ではなく 0 に設定されることです!! この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

これは、フィールドに何も入力しないと、空の文字列が返されるために発生します。これは と同じではなく、NULLPDO が指定された型に変換する原因となりますPDO::PARAM_INT

を挿入するには、 PDO にNULL渡す必要があります。NULL

$insertSQL->bindValue(
    ':d', 
    $_POST['PHONE'] ?: NULL, 
    PDO::PARAM_INT
);
于 2013-10-29T13:37:03.610 に答える