下面的代码打印出一个下拉框,默认字符串为--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>");当表单提交后,它将调用一个函数,该函数将确定是否将dropdown框作为默认值,如果不是,我将更新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);这听起来可能非常基础,但有人能解释一下它是如何工作的吗?因为我还在学习..提前感谢!
发布于 2013-05-09 04:50:53
请阅读http://php.net/manual/en/language.types.null.php
在php中,NULL是一个表示未分配对象的特殊值。" NULL“是包含单词NULL的字符串文字,两者不同。然而,在PHP中,您可能会看到它会在相等的情况下处理一些类型。例如,"“== NULL为true。
您不能通过HTTP发送PHP空值,因为HTTP中的所有内容都是字符串。因此,即使您指定NULL作为值,表单实际上也会将"NULL“发送到服务器。
发布于 2013-05-09 04:48:16
value=NULL等同于value="NULL"。不能通过HTTP提交非字符串值。使用value="" (空字符串)代替value=NULL。这对php来说是错误的,就像NULL一样。
发布于 2013-05-09 04:48:27
所有输入始终表示为string数据。
你只需要用正确的值填充你的值,它不能是null类型,既不能是int,也不能是smth。
为您提供的可能解决方法:
如果需要整数,则
$id = (int) $_GET['id'] ;empty()。它将在"0"、0、null和其他一些应用程序上返回true。https://stackoverflow.com/questions/16449858
复制相似问题