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

変数にNULLを代入してMYSQLに保存したいのですが、
$var = NULL;
これでやってもMYSQLにはNULLで保存されずに、空欄のままになってしまいます。
MYSQLの構造は
ヌル(NULL) → はい
デフォルト値 → NULL
にしてあります。
何が原因でしょうか?

A 回答 (1件)

実行されるSQL文を確認してみてください。



おそらくですが、該当部分は '' と言う風になっていないでしょうか。
insert into テーブル名 (項目名) values ('')
update テーブル名 set 項目名=''

データに NULL を出力するには、SQL文で NULL と記述する必要があります。
insert into テーブル名 (項目名) values (NULL)
update テーブル名 set 項目名=NULL

SQL文の生成が以下のようですと NULL を出力できません。
$sql = "insert into テーブル名 (項目名) values ('$var')"
$sql = "update テーブル名 set 項目名='$var'"

もしそれが原因でしたら、以下のような関数で補ってください。
//クォートでくくる
function fnc_quot($str){
if (is_null($str)){
return "NULL";
}else{
return "'$str'";
}
}
$sql = "insert into テーブル名 (項目名) values (".fnc_quto($var).")";
$sql = "update テーブル名 set 項目名=".fnc_quto($var)

$var の値が NULL であれば "NULL" と言う文字列を返し、
そうでなければ $var の値を '' でくくって返します。

PHPにそのような関数が最初からあるのかも知れませんが、
内容はおそらくこのような処理をしているのだろう、
とわかっていただければと思います。
    • good
    • 0
この回答へのお礼

ご指摘の通りでした。
お陰さまでうまくいきました。
ありがとうございます。

お礼日時:2008/10/14 01:36

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