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

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

问题描述:

以下是我的HTML表单中的一个片段,它相应地从表格行中选择选项。是否可以使用PHP将HTML SELECT/OPTION值设置为NULL?

我想要做的是将第一个选项值设置为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 
} 
+0

真的吗? '的var_dump($ _ GET [ 'missingKey']); // NULL' http://codepad.org/2s7jCBbc – AlienWebguy 2012-01-10 00:38:36

+0

谢谢deceze - 我已经使用了你的答案,但仍然有问题得到它的权利NULL - 如果你看到我更新。有任何想法吗? – Bernard 2012-01-10 01:17:11

+0

@Alien这不是一个POST/GET值,这是*不存在*值。 – deceze 2012-01-10 01:24:52

所有你需要的是检查后的东西。

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

这是危险的。如果'type_id = 0'是一个有效的ID呢? – AlienWebguy 2012-01-09 23:41:24

+0

的确如此。实际上,我会提出一种不同的方法,但实际上对于提问者来说,这很可能太麻烦。 – Jason 2012-01-09 23:46:04

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

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表示法

+0

PHP语法错误:意外的']'行3 – Jason 2012-01-09 23:47:33

+0

thx,提示。我修正了这个问题 – 2012-01-10 00:25:29

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