Не удалось получить запись текущей даты

Я хотел бы получить данные из базы данных на основе текущей даты, в MySQL это работает идеально, используя NOW() но я попытался использовать следующий способ для php, но это не работает (это отображать старые данные также).

$date = date('Y-m-d');

$sql = "SELECT  a.created_date,a.shipment_id,o.order_id, o.customer_id,c.delivery_method
FROM  `orders` AS o
INNER JOIN  `table_1` AS a ON o.order_id = a.order_id
INNER JOIN  `table_2` as c ON c.id=o.customer_id
WHERE a.manifest_create_status =0
AND a.active_status=1
AND o.customer_id IN ($id)
AND a.created_date > $date
ORDER BY a.created_date";

Что-то не так в запросе?

1

Решение

Вам нужно заключить в кавычки значение даты, например a.created_date > '$date',

Также обратите внимание, что выражение o.customer_id IN ($id) было бы лучше написано o.customer_id = $id,

Запрос:

$sql = "SELECT  a.created_date,a.shipment_id,o.order_id, o.customer_id,c.delivery_method
FROM  `orders` AS o
INNER JOIN  `table_1` AS a ON o.order_id = a.order_id
INNER JOIN  `table_2` as c ON c.id=o.customer_id
WHERE a.manifest_create_status =0
AND a.active_status=1
AND o.customer_id = $id
AND a.created_date > '$date'
ORDER BY a.created_date";

Чтобы избежать этого типа проблемы, а также обеспечивает защиту от любого типа инъекции связывания (где id исходит из?), я бы порекомендовал использовать параметры связывания, а именно:

$date = date('Y-m-d');
$sql = "SELECT  a.created_date,a.shipment_id,o.order_id, o.customer_id,c.delivery_method
FROM  `orders` AS o
INNER JOIN  `table_1` AS a ON o.order_id = a.order_id
INNER JOIN  `table_2` as c ON c.id=o.customer_id
WHERE a.manifest_create_status =0
AND a.active_status=1
AND o.customer_id = ?
AND a.created_date > ?
ORDER BY a.created_date";

$stmt = $conn->prepare($sql);
$stmt->bind_param("is", $id, $date);
$stmt->execute();
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector