空字段在数据库中保存空值

时间:2017-02-15 04:09:23

标签: php mysql

我有一个需要由用户填写的表单。它有必填字段,不需要其他字段。例如,员工信息字段需要填写,不需要配偶,子女和子女的生日。每当我尝试在数据库中保存数据同时让配偶和子项保持空白时,它也会在数据库中保存空值,并且子日历字段(datepickers)会保存默认日历值1970-01-01。 这是我保存在数据库中的php代码。

if (!empty($_POST['child']) && !empty($_POST['ch_DateOfBirth'])) {

        $selectEmp=$dbcon->query("Select Emp_ID from employee");
        $count=$selectEmp->num_rows;

        if ($count>0) {
                while($row=$selectEmp->fetch_array()){
                    $emp_id="".$row['Emp_ID']."";
                }

         $child_name=$_POST['child'];
         $count=count($child_name);

            for ($i=0; $i < $count ; $i++) {
               $child_bday=date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$i]));
               $sql6="INSERT into  tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name[$i]."', '".$child_bday."') ";
                $dbcon->query($sql6);
            }
        }

}

这是数据库显示的内容。

enter image description here

4 个答案:

答案 0 :(得分:2)

在数据库中允许空值,即将默认值设置为null,例如

`CREATE TABLE emptable(
`empname` VARCHAR(30) NOT NULL,
`dob` date DEFAULT NULL);`

答案 1 :(得分:1)

默认日历值已输入数据库,因为执行1970-01-01时空值将转换为date('Y-d-m', strtotime($_POST['ch_DateOfBirth']

因此,检查日期是否为空,然后仅在其中包含值时将其转换为日期格式

for ($i=0; $i < $count ; $i++) {
               $child_bday="";
               //converts to date format only if the date field is not empty..else its null
               if(!empty($_POST['ch_DateOfBirth'][$i])
               {
               $child_bday=date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$i]));
               }
               $sql6="INSERT into  tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name[$i]."', '".$child_bday."') ";
                $dbcon->query($sql6);
            }

答案 2 :(得分:0)

使用array_filter()从已发布的数组中删除空值。

$child_names = array_filter($_POST['child']);
foreach($child_names as $key => $child_name){

     $child_bday = (isset($_POST['ch_DateOfBirth'][$key]))?date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$key])):NULL;

     $sql6="INSERT into  tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name."', '".$child_bday."') ";
            $dbcon->query($sql6);
}

答案 3 :(得分:0)

确切地说:您需要更改表格列“Ch_Bdate”

ALTER TABLE table_name CHANGE `Ch_Bdate` `Ch_Bdate` DATETIME NULL DEFAULT NULL;