Добавить, где предложения к SQL выбрать динамически

0

В администраторе веб-магазина я перечисляю заказы из sql. Здесь у меня также есть форма поиска, где я набираю ключевое слово и начинаю поиск.

Теперь я добавил дату и дату ввода в форму. Как я могу добавить их в sql select, если администратор вводит даты, а не только ключевое слово?

<td style="text-align: center;">
    <input type="text" name="date_from" value="<?php if(isset($_POST['date_from'])) { echo $_POST['date_from'];} ?>" size="7"  class="datepicker">
    <span> - </span>
    <input type="text" name="date_end" value="<?php if(isset($_POST['date_end'])) { echo $_POST['date_end'];} ?>" size="7"  class="datepicker">
</td> 

$sql = "SELECT rendeles_user_id , rendeles_id, nev, status, vegosszeg,br_vegosszeg, datum, ido, egyeb FROM rendeles_adatok WHERE $kereses_helye LIKE '%$kw%' ORDER BY $kereses_rendezes $kereses_sorrend";

$kereses_helye означает, что я хочу искать. (имя пользователя, идентификатор заказа, адрес электронной почты...)

Теги:

1 ответ

1

Вы могли бы построить предложение where перед оператором sql, основанным на существовании значений даты POST - это не очень красиво, и этот и оригинальный код уязвимы для SQL-инъекции. Я предположил (возможно ошибочно) в запросе, что столбец datum была колонка дату в БД

$where = !empty( $_POST['date_from'] ) && !empty( $_POST['date_end'] ) ? "where '$kereses_helye' like '%$kw%' and 'datum' between '{$_POST['date_from']}' and '{$_POST['date_end']}' " : "where '$kereses_helye' like '%$kw%'";

$sql = "select 
    rendeles_user_id,
    rendeles_id,
    nev,
    status,
    vegosszeg,
    br_vegosszeg,
    datum,
    ido,
    egyeb 
    from rendeles_adatok 
    {$where}
    order by $kereses_rendezes $kereses_sorrend";
  • 0
    Но если date_from пуст, а date_end не пуст?
  • 0
    !empty( $_POST['date_from'] ) && !empty( $_POST['date_end'] ) ~ должно потребоваться, чтобы оба были НЕ пустыми для продолжения

Ещё вопросы

Сообщество Overcoder
Наверх
Меню