以下は、HTMLフォームから抜粋したもので、それに応じてテーブルの行からオプションを取得します。
私がやりたいのは、最初のオプション値をNULLにして、選択しない場合、フォームがデータベースに送信されるときにNULLが入力されるようにすることです。
<td>Type</td>
<td>:</td>
<td><select name="type_id" id="type_id" class="form">
<option value=""></option>
<?php
$sql = mysql_query("SELECT type_id, type FROM $tbl_add_type") or die(mysql_error());
while ($row = mysql_fetch_array($sql))
{
echo "<option value=".$row['type_id'].">" . $row['type'] . "</option>";
}
?>
</select>*</td>
これは可能ですか?または、誰かがこれを行うより簡単/より良い方法を提案できますか?
ありがとう
更新:答えてくれてありがとう、私はそれをNULLに変換するために以下に詳述する方法を使用しています。
if ($_POST['location_id'] === '')
{
$_POST['location_id'] = 'NULL';
}
ただし、次のクエリでこのNULL値を使用しようとすると、機能しません。
UPDATE addresses SET location_id='NULL' WHERE ipid = '4791'
location_id=NULL
代わりに、これを行う方法がわからない...
更新2:これは私のクエリの仕組みです:
if ($_POST['location_id'] === '')
{
$_POST['location_id'] = 'NULL'; // or 'NULL' for SQL
}
$notes=isset($_POST['notes']) ? mysql_real_escape_string($_POST['notes']) : '';
//$location_id=isset($_POST['location_id']) ? mysql_real_escape_string($_POST['location_id']) : '';
$ipid=isset($_POST['ipid']) ? mysql_real_escape_string($_POST['ipid']) : '';
$sql="UPDATE addresses
SET notes='$notes', location_id='$location_id'
WHERE ipid = '$ipid'";
mysql_query($sql) or die(mysql_error());
いいえ、POST/GET値がnull
になることはありません。最適なのは空の文字列で、null
/'NULL'
に変換できます。
if ($_POST['value'] === '') {
$_POST['value'] = null; // or 'NULL' for SQL
}
必要なのは、物事のポスト側のチェックだけです。
<?php
if(empty($_REQUEST['type_id']) && $_REQUEST['type_id']!=0) $_REQUEST['type_id'] = null;
PHP 7では、次のことができます。
$_POST['value'] ?? null;
他の回答で述べたように、値が ''に等しい場合、nullも送信されます。
はい、可能です。このようなことをしなければなりません:
if(isset($_POST['submit']))
{
$type_id = ($_POST['type_id'] == '' ? "null" : "'".$_POST['type_id']."'");
$sql = "INSERT INTO `table` (`type_id`) VALUES (".$type_id.")";
}
$_POST['type_id']
変数の値が空です。はいの場合、NULL
を文字列として割り当てます。そうでない場合は、SQL
表記に値を 'で割り当てます
だからこそ、データベースのNULL値がまったく気に入らないのです。
理由
if ($_POST['location_id'] === '') {
$location_id = 'NULL';
} else {
$location_id = "'".$_POST['location_id']."'";
}
$notes = mysql_real_escape_string($_POST['notes']);
$ipid = mysql_real_escape_string($_POST['ipid']);
$sql="UPDATE addresses
SET notes='$notes', location_id=$location_id
WHERE ipid = '$ipid'";
echo $sql; //to see different queries this code produces
// and difference between NULL and 'NULL' in the query