jQuery Datepicker如果留空则插入NULL

时间:2013-10-21 15:33:14

标签: php jquery sql datepicker

我正在使用jQuery的Datepicker。提交页面时,如果没有输入值,我需要将NULL插入SQL表中。相反,它目前正在插入1900-01-01 00:00:00.000。是否可以使用jQuery的Datepicker在我的插入中传递NULL

在多年前创建的SQL表中,数据类型为datetime,Allow Nulls设置为Yes。默认值或绑定中没有设置任何内容。

另外,请注意,我正在进行错误检查并考虑SQL注入的可能性。只是尝试在这里阻止集群并保持代码简单易读,我不在此处。

PHP

$sDate = $_POST['sDatepicker'];
$eDate = (!empty($_POST['eDatepicker'])) ? $_POST['eDatepicker'] : NULL;

$insert = "INSERT INTO table1 (sdate, edate)
            VALUES ('$sDate', '$eDate')";
// Connection, error checking, execution, etc. using ODBC

我也尝试过:

if (empty($_POST['eDatepicker'])) {
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', NULL)";
} else {
    $eDate = $_POST['eDatepicker'];
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', '$eDate')";
}
// Connection, execution, etc.

我还尝试添加一个隐藏字段并在(empty($_POST['eDatepicker']))时使用它,因此如果它是空的,则甚至不使用datepicker。即使我这样做,它仍会插入相同的1900-01-01 00:00:00.000

HTML / jQuery的

<div>
    <label>Start Date:</label>
    <input type="text" id="sDatepicker" name="sDatepicker" class="required" />
</div>
<div>
    <label>End Date:</label>
    <input type="text" id="eDatepicker" name="eDatepicker" />
    <input type="submit" value="Submit" id="btnSubmit" />
</div>

$('#sDatepicker, #eDatepicker').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/dd/yyyy"
});

我还尝试在jQuery中拆分日期选择器并添加defaultDate: null,但这也不起作用。

1 个答案:

答案 0 :(得分:1)

您只需检查字段值是否为“1900-01-01 00:00:00.000”并插入null。

if ($_POST['eDatepicker']=="1900-01-01 00:00:00.000") {
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', NULL)";
}

<强>更新: 由于此值不是来自datepicker.you应检查是否在db。中设置了默认值。

快速解决方法是向datepicker添加default date并在php中检查

$('#sDatepicker, #eDatepicker').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/dd/yyyy"
    defaultDate:"01/01/1900" //some date
});

if ($_POST['eDatepicker']=="01/01/1900") {
        $insert = "INSERT INTO table1 (sdate, edate)
                    VALUES ('$sDate', NULL)";  //insert null
    }