Как указать интервал дат в SQL из GET?

Имеется:
$stat = mysql_query("SELECT * FROM `betaintranet`.`ad_stat` 
WHERE `ban_id` = $banid 
AND `datetime` LIKE '%2020-10-28%'");

и есть
/bnid.php?start=28-06-2019&end=31-12-2020&id=118&bantype=

Обратите внимание в дате стоит LIKE '%...% по сколку форматы отличаются
Реальный формат хранения даты:
2019-07-09 14:16:16

Собственно во вопрос явно простой но я не пхпшник
Как подставить вместо
даты переменную из гет параметра, да еще и в интервале ?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
конечно за такой ответ я буду гореть в аду, но лучше это сделаю я, чем какой-нибудь подлец
данные из query string лежат в массиве $_GET
интервал в SQL делается просто, оператором BETWEEN
причем к первой дате прибавляется 00:00:00, а ко второй 23:59:59
функции mysql_query в РНР уже много лет как нет
но если уж приходится копаться в какой-то доисторическоом гэ
$begin = addslashes($_GET['begin']. ' 00:00:00');
$end = addslashes($_GET['end']. ' 23:59:59');
$banid = (int)$banid;
$sql = "SELECT * FROM `betaintranet`.`ad_stat` WHERE `ban_id` = $banid AND `datetime` BETWEEN '$begin' AND '$end'";

но меня конечно аж передергивает от этого говнокода
утешает только то что местные помогайки напишут еще хуже

в нормальном мире этот код выглядит так

$begin = $_GET['begin']. ' 00:00:00';
$end = $_GET['end']. ' 23:59:59';
$sql = "SELECT * FROM `betaintranet`.`ad_stat` WHERE `ban_id` = ? AND `datetime` BETWEEN ? AND ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$banid, $begin, $end]);

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы