PHP NULL vs'NULL'

时间:2013-05-08 20:45:07

标签: php html drop-down-menu dropdownbox

这个问题来自于我花了2个小时的反复试验,最后找到了错误的位置,我需要有人帮助澄清为什么这样做。

下面的代码打印出一个下拉框,其默认字符串为'--Select Status--',其值为NULL。

print("<label>Overall Status Overwrite:</label>
       <select name='case_ov_status' class='case_ov_status'>
       <option selected='selected' value=NULL>--Select Status--</option>");

在提交时,我调用一个函数来确定下拉框是否为默认值,如果不是,我将更新SQL数据库。然而,这是我困惑的地方。尽管提交了NULL值,下面的if语句仍然会运行。我发现2小时后,使用if($case_ov_status != 'NULL')代替if($case_ov_status != NULL)解决了问题。

if($case_ov_status != NULL){ //Still ran despite != NULL.
                mysql_query("START TRANSACTION", $connection);
                $sql = "Update cases set status=".$case_ov_status." Where patientid='".$patientID."' and caseid='".mysql_real_escape_string($case)."'";
                $resultNew = mysql_query($sql, $connection);

这可能听起来很基本,但有人可以解释一下这是如何工作的吗?因为我还在学习.. 提前谢谢!

5 个答案:

答案 0 :(得分:2)

请阅读http://php.net/manual/en/language.types.null.php

NULL是表示php中未分配对象的特殊值。 “NULL”是包含单词NULL的字符串文字,并且不相同。但是在PHP中你可能会看到它会做一些与平等相关的类型。例如,“”== NULL为真。

您无法通过HTTP发送PHP NULL值,因为HTTP中的所有内容都是字符串。因此,即使您将NULL指定为值,您的表单实际上也会向服务器发送“NULL”。

答案 1 :(得分:1)

value=NULL相当于value="NULL"。您无法通过HTTP提交非字符串值。而不是value=NULL使用value=""(空字符串)。对于PHP来说,这就像NULL那样是假的。

答案 2 :(得分:1)

所有输入始终表示为string数据。

您只需要使用正确的值填充值,它不能是null类型,也不能是int或其他类型。

可能的解决方法:

  • 如果您期望整数,则将每个输入转换为整数。与$id = (int) $_GET['id'] ;
  • 一样
  • 使用empty()等功能。它会在"0"0null和其他一些上返回。

答案 3 :(得分:1)

你在这里感到困惑。

NULL!='NULL'

左边的null是没有值的变量的保留值, 右边的nul是一个包含单词null的字符串。

现在,为了获得您提供的示例,如果您将if语句更改为!='NULL'(带引号),您将获得预期结果。 if($ case_ov_status!=“NULL”)

我的建议是将option标签中的值设置为value =“”或value =“0”,然后将if语句更改为: if($ case_ov_status!=“”) if($ case_ov_status!= 0) 甚至更好 如果(!空($ case_ov_status))

答案 4 :(得分:1)

当用户选择<option selected='selected' value=NULL>--Select Status--</option>");时,它会返回您在value属性中指定的值。它可以是1,2,abc,..或NULL。字符串NULL作为选定值返回。 当您检查if($case_ov_status != NULL)时,它会将$case_ov_status设置为NULL值(即“”)或不是?但显然您需要检查所选值是否为NULL string。所以你必须说if($case_ov_status != 'NULL')