PHP: Isset с инструкцией if else

#php #sql

#php #sql

Вопрос:

iso.obj.php

 $from = null;
$too = null;

if (isset($_POST['search'])) {
    if ($from = null) {
        $from = date("Y-m-d");
    } else {
        $from = $_POST['FromDateTime'];
    }

    if ($too = null) {
        $too = date('Y-m-d', strtotime(" 30 days")) . " 23:59:59"; 
    } else {
        $too = $_POST['ToDateTime']." 23:59:59";
    }
}
$sql ="//statement here with
WHERE capDateTime >='{$from}' AND capDateTime <='{$too}'";
  

Код работает нормально, но у меня возникла проблема, когда пользователь запрашивает страницу и возвращает пустую таблицу. Но если я выберу дату и время вручную, оно будет отображаться в соответствии с датой и временем.

Мой вопрос: как мне указать текущую дату, если она не установлена, и если установлена, следуйте за $ _POST?

Комментарии:

1. if($from = null){ ??? и if ($too = null) { вы присваиваете значения, не сравнивая

2. if ($from === null) { и if ($too === null) {

3. if ($too = null) this ---> = является оператором присваивания. Если вы хотите сравнить его, используйте == оператор сравнения. Смотрите здесь .

4. Примечание: напрямую используя переменные в вашем $ sql, вы подвергаете себя SQL-инъекции. Пожалуйста, используйте PDO или Mysqli см. owasp.org/index.php/SQL_Injection

5. @MaartenSchermer спасибо за напоминание.

Ответ №1:

 $from = date("Y-m-d");
$too = date('Y-m-d', strtotime(" 30 days")) . " 23:59:59";

if (isset($_POST['search'])) {
    if (!empty($_POST['FromDateTime'])) {
        $from = $_POST['FromDateTime'];
    }

    if (!empty($_POST['ToDateTime'])) {
        $from = $_POST['ToDateTime']." 23:59:59";
    }
}