ユーザーからの入力がなかった場合にはNULLを設定したいのですが、0になってしまいます。
"%s"あたりが怪しいとは思うのですが、どう実装すれば良いか悩んでいます。
現実装は以下に抜粋します。(実際は6カラムありますが、省略しています)
※DBでデータ型はINT、デフォルト値はNULLに設定しています。
php
1$sql = sprintf('INSERT INTO hogeTable SET hoge="%s"', 2 mysqli_real_escape_string($db, $_POST['hoge']) 3);
html
1<td> 2 <select name="hoge"> 3 <option value="">-</option> 4 <option value=1>1</option> 5 <option value=2>2</option> 6 </select> 7</td> 8
「-」を選択して、echo print_r($_POST);で中身を確認すると、空文字が格納されていることが確認できたのですが、
SQL文を生成した際に0に変換されてしまっているようです。
以下のようにしても結果は同じでした。
html
1<td> 2 <select name="hoge"> 3 <option value=NULL>-</option> 4 <option value=1>1</option> 5 <option value=2>2</option> 6 </select> 7</td> 8
取得した値が空文字だった場合、以下のようなSQL文を呼ぶよう分岐することで一応動作上は問題なくなったのですが、かなり強引なやり方なのが気に入りません。
PHP
1$sql = sprintf('INSERT INTO hogeTable SET hoge=NULL');
何か良い方法はありますでしょうか?
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。