プロが教えるわが家の防犯対策術!

下記サイトを参考にサイト上からデータベース(MySQL)のテーブルにレコードを追加できるようにしました。
http://ponk.jp/php/basic/php_mysql#page_index3

レコードの追加自体はできたのですが、テキストフィールドに何も記述されていない場合にNULLとして追加したいと思っているのですが、その方法が分かりません。
コードは次のようにしました。

$number= isset($_POST["number"]) ? $_POST["number"] : 'NULL';

$st = $pdo->prepare("INSERT INTO player(number) VALUES(?)");
$st->execute(array($number));

このコードで追加をすると、NULLではなく空白が格納されてしまいます。
どこを修正すればNULLとして格納できるようになるでしょうか?

ご存知の方いらっしゃいましたらご教示ください。
よろしくお願いします。

A 回答 (3件)

テーブルの作成時、該当カラムにはNOT NULL は指定していないですか?



ちょとわかりませんけど、NULL ではなくて null でやってみてください。

この回答への補足

回答ありがとうございます。

カラムを追加した時にデフォルト値にNULL、チェックも入れています。
自作のフォームからはNULLが追加できないため、phpMyAdminから開いてNULLにチェックしてNULLを入れています。

>ちょとわかりませんけど、NULL ではなくて null でやってみてください。

nullでやってみましたが、結果は同じでした。

補足日時:2015/01/12 19:52
    • good
    • 0

$number= isset($_POST["number"]) ? $_POST["number"] : 'NULL';



これ、なにか引っかかります。

$number= 'NULL';

にしたらどうなります?

この回答への補足

回答ありがとうございます。

isset($_POST["number"])だと何故か全てTRUEになってしまうみたいだったのでIF文を変えてみました。

$number= ($_POST["number"]!="") ? $_POST["number"] : "NULL";

これだと変数に「NULL」を代入することはできたのですが、カラムがINT型だと「0」が、VARCHAR型だとそのまま「NULL」がテキストとして格納されてしまいました。

補足日時:2015/01/12 20:34
    • good
    • 0

$number= ($_POST["number"]!="") ? $_POST["number"] : NULL;



でどうなります?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>$number= ($_POST["number"]!="") ? $_POST["number"] : NULL;

仰る通りにしたらINT型にもVARCHAR型にもNULLが入りました。
本当にありがとうございました。

お礼日時:2015/01/12 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!