У меня небольшая проблема с mySQL:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= "AND (date(orderRelease.Sales_Release_Date)) >= '" . $rooflightReportSalesReleaseFromDate
. "' OR orderRelease.Sales_Release_Date IS NULL" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (date(orderRelease.Sales_Release_Date)) <= '" . $rooflightReportSalesReleaseToDate
. "' OR orderRelease.Sales_Release_Date IS NULL";
}
$rooflightReportSalesReleaseToDate и $rooflightReportSalesReleaseFromDate иногда будут пустыми, но я уверен, что если обе даты имеют значения, они все еще возвращают значение null (вероятно, из-за операторов ИЛИ). Есть ли способ заставить его обрабатывать нулевые/пустые записи, потому что я получаю ошибки, если у меня нет операторов или (или нулевая проверка сама по себе)
Спасибо.
привет Йенс, см. отредактированный вопрос для полного заявления






Вы смешиваете И и ИЛИ, поэтому, скорее всего, это проблема приоритета оператора. Просто добавьте круглые скобки вокруг операций ИЛИ:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= "AND (
date(orderRelease.Sales_Release_Date) >= '" . $rooflightReportSalesReleaseFromDate . "'
OR orderRelease.Sales_Release_Date IS NULL
)" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (
date(orderRelease.Sales_Release_Date) <= '" . $rooflightReportSalesReleaseToDate . "'
OR orderRelease.Sales_Release_Date IS NULL
)";
}
Сказав это, предполагая, что Sales_Release_Date содержит дату + время, но переменные содержат только дату, вы можете исключить приведение date() следующим образом:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= " AND (orderRelease.Sales_Release_Date >= '" . $rooflightReportSalesReleaseFromDate . "' OR orderRelease.Sales_Release_Date IS NULL)" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (orderRelease.Sales_Release_Date < '" . $rooflightReportSalesReleaseToDate . "' + INTERVAL 1 DAY OR orderRelease.Sales_Release_Date IS NULL)";
// check for less than only -------------------^ ^
// add one day to end date --------------------------------------------------------------------
}
Спасибо! это устроило!
распечатайте полное Заявление и поделитесь им