Я использую jQuery Datepicker. Когда страница отправляется, если значение не введено, мне нужно вставить NULL
в таблицу SQL. Вместо этого он в настоящее время вставляет 1900-01-01 00:00:00.000
. Можно ли передать NULL
в мою вставку с помощью jQuery Datepicker?
В SQL таблицы, которая была создана лет назад, тип данных является datetime
и Разрешает Null установлено значение Да. Ничего не задано в стандартном значении или привязке.
Кроме того, просто отметить, что я делаю проверку ошибок и принимая во внимание возможность 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"
});
Я также попытался расщепить datepicker в jQuery и добавить defaultDate: null
но это тоже не сработало.
вы можете просто проверить, является ли значение поля "1900-01-01 00: 00: 00.000" и вставить нуль.
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
}
NULL
в качестве значения по умолчанию в вашей БД?