是否可以使用PHP将HTML SELECT / OPTION值设置为NULL?

时间:2012-01-09 23:34:21

标签: php html-select

以下是我的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());

5 个答案:

答案 0 :(得分:31)

不,POST / GET值永远不会是null。它们最好的是一个空字符串,您可以将其转换为null / 'NULL'

if ($_POST['value'] === '') {
    $_POST['value'] = null; // or 'NULL' for SQL
}

答案 1 :(得分:3)

您需要的只是检查事物的邮政方面。

<?php 
if(empty($_REQUEST['type_id']) && $_REQUEST['type_id']!=0) $_REQUEST['type_id'] = null;

答案 2 :(得分:0)

是的,有可能。你必须做这样的事情:

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符号

分配值

答案 3 :(得分:0)

这就是为什么我根本不喜欢数据库中的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

答案 4 :(得分:0)

在php 7中,您可以执行以下操作:

$_POST['value'] ?? null;

如果值等于其他答案中所述的“”,则也会向您发送null。