Проверьте, не истек ли срок действия SQLite

0

Как я могу исправить этот SQL-запрос, чтобы проверить, была ли дата старше фактической и истекла и может быть удалена?

Я пробовал с этим кодом, но кажется, что он не работает

<?php
$date = new DateTime();
      $d = $date->format('Y-m-d');
      $stmt = $this->db->prepare("DELETE FROM test_table WHERE _out = ? AND _out <= {$d}");
      $stmt->execute(array($d)); 
?>

Я также попытался с этим запросом, но когда вызов ajax сделан на контроллер, кажется, что он не работает

$stmt = $this->db->prepare("DELETE FROM reservations WHERE check_out <= {$d}");
  • 1
    Какой класс вы используете? PDO?
Теги:

2 ответа

1
Лучший ответ
<?php
$date = new DateTime();
$d = $date->format('Y-m-d');
$stmt = $db->prepare('DELETE FROM reservations WHERE check_out <= :out');
$stmt->bindValue(':out', 1, SQLITE3_TEXT);
$stmt->execute();
?>

Использовать? для значения замены и передать valur в методе выполнения.

  • 0
    Я на SQLite, так может быть в этом проблема?
  • 2
    Вы используете класс SQLite3 тогда?
Показать ещё 2 комментария
2

После ознакомления с документацией SQLite я обнаружил, что лучший способ достичь моей задачи - использовать функцию date() внутри запроса. Я не слишком опытен с этим типом базы данных. Итак, вот как я исправил проблему

 <?php
   $stmt = $this->db->prepare('DELETE FROM test_table WHERE _out <= date()');
   $stmt->execute();
 ?>
  • 2
    о, вы хотели удалить записи старше, чем сегодня. Я думал, что вы хотите просто удалить записи старше, чем переменная
  • 2
    @ DaniloSouzaMorães да, сэр, я не знал, что PDO с драйвером SQLite 3 обрабатывает этот тип запросов иначе, чем традиционный mysqli, спасибо за поддержку

Ещё вопросы

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