通过php表单输入的mysql INT和DATE的空值
我正在制作这样的表格:通过php表单输入的mysql INT和DATE的空值,php,html,mysql,forms,Php,Html,Mysql,Forms,我正在制作这样的表格: <tr align="center"><!-- list A doc --> <td><b>Documents Collected:</b></td> <td> <select name="listA_id"> <option value=""&g
<tr align="center"><!-- list A doc -->
<td><b>Documents Collected:</b></td>
<td>
<select name="listA_id">
<option value="">List A documents</option>
<?php
include("connect-db.php");
$list = mysql_query("SELECT doc_no, doc_name FROM hr_doc_master WHERE doc_id =1 ");
while($row_list=mysql_fetch_array($list))
{
echo "<option value=\"{$row_list[0]}\">{$row_list[1]}</option>";
}
mysql_close($connection);
?>
</select></td></tr>
<tr align="center"><td><b>Document No.</b></td>
<td><input type="text" name="listA_doc_no"></td></tr>
<tr align="center"><td>Expiry Date</td><td><input type="date" name="listA_doc_expiry"></td></tr>
<tr align="center"><td>List B</td></tr>
<!----- list B ------->
<tr align="center">
<td><b>Documents Collected:</b></td>
<td>
<select name="listB_id">
<option value="">List B documents</option>
<?php
include("connect-db.php");
$list = mysql_query("SELECT doc_no, doc_name FROM hr_doc_master WHERE doc_id = 2");
while($row_list=mysql_fetch_array($list))
{
echo "<option value=\"{$row_list[0]}\">{$row_list[1]}</option>";
}
mysql_close($connection);
?>
</select>
</td>
</tr>
<tr><td>Document No.</td><td><input type="text" name="listB_doc_no" size =30 ></td></tr>
<tr align="center"><td><b>Expiry Date</b></td><td><input type="date" name="listB_doc_expiry" size =30 ></td></tr>
<tr><td colspan=2><hr/></td></tr>
<tr align="center"><td>List C</td></tr>
<tr align="center">
<td>
<b>Documents Collected:</b>
</td>
<td>
<select name="listC_id">
<option value="">List C documents</option>
<?php
include("connect-db.php");
$list = mysql_query("SELECT doc_no, doc_name FROM hr_doc_master WHERE doc_id =3 ");
while($row_list=mysql_fetch_array($list))
{
echo "<option value=\"{$row_list[0]}\">{$row_list[1]}</option>";
}
mysql_close($connection); `?>`
</select>
</td>
</tr>
<tr align="center"><td>Document No.</td><td><input type="text" name="listC_doc_no" size =30 ></td></tr>
<tr align="center"><td>Expiry Date</td><td><input type="date" name="listC_doc_expiry" size =30 ></td></tr>
if($_POST['listA_doc_expiry'] ==""){$listA_doc_expiry = 'NULL' ;
$listA_id = 'NULL'; }
else{$listA_doc_expiry = $_POST['listA_doc_expiry'];
echo $listA_doc_expiry; }
以及查询:
$result = mysql_query("INSERT INTO hr_information(consultant_id, listA_doc_no, listB_doc_no, listC_doc_no, listA_doc_expiry, listB_doc_expiry,
listC_doc_expiry, listA_id, listB_id, listC_id) VALUES('$consultant_id','$listA_doc_no','$listB_doc_no','$listC_doc_no','$listA_doc_expiry','$listB_doc_expiry','$listC_doc_expiry','$listA_id','$listB_id','$listC_id');") or die(mysql_error());
它给出了以下错误不正确的日期值:第1行“listB_doc_expiry”列的“NULL”
如何在数据库中输入NULL日期值和INT。当我直接在查询中手动输入NULL(不带“”)时,它会起作用。
另外,在创建数据库时,我已经将两者声明为NULL。
您正在尝试插入字符串
'NULL'
,而不是NULL
。值
部分中的引号引起了NULL
值的问题
更重要的是,您的代码极易受到SQL注入攻击。与其构造一个字符串来表示该语句,并自己将值放入该字符串中,不如使用一个准备好的语句,然后将值绑定到引入的字段。关于如何做到这一点,有很多例子
一个很好的好处是,这也将消除您的
'NULL'
问题 NULL不应包含在“
中,因为它是一个保留字
您的查询结果如下:
“在人力资源信息(…列表文档到期日,…)中插入值(…'NULL',…
字符串
'NULL'
对于日期或int列无效。是的。我想出来了。但是是否可以通过php输入NULL
。否则,我将不得不编写7个if
条件,并在这7个条件内对每个情况进行查询。必须有更聪明的方法吗?