1

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

在多年前创建的 SQL 表中,Data Type 为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']))是这样的话,如果它是空的,甚至不使用日期选择器。即使我这样做,它仍然会插入相同的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,但这也不起作用。

4

1 回答 1

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。你应该检查是否在 db 中设置了默认值。

一个快速的解决方法是向 datepicker 添加一个默认日期并在 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
    }
于 2013-10-21T16:07:23.173 回答