#php #mysql #wordpress
Вопрос:
Я пытаюсь получить строки из пользовательской таблицы, которую я создал в своей базе данных wp.
Я пытаюсь получить все записи, в которых их значение времени, созданное по дате, находится в диапазоне дат. Это часть функции, которую я создаю
global $wpdb;
$start_date = '2021-07-04';
$end_date = '2021-10-04';
$table_name = 'statistics_revenues';
$query = $wpdb->prepare("SELECT * FROM {$wpdb->prefix}$table_name WHERE DATE(date_created) BETWEEN ($start_date AND $end_date)", ARRAY_A);
$query_results = $wpdb->get_results($query, ARRAY_A);
когда я просто запускаю запрос select без условий, все работает, но
как только я добавляю часть из «ГДЕ ДАТА(дата создания)….», запрос не получает необходимых результатов.
Где я ошибся?
Комментарии:
1. У вас есть
$start_date = '2021-07-04'
, как только вы вставляете его в свой запрос, вы теряете кавычки, что делает его математическим выражением2021-07-04
(которое равно2010
). Это, вероятно, одна из причин. (То же самое с$end_date
)
Ответ №1:
Удалите скобки между просто напишите BETWEEN $start_date AND $end_date
Ответ №2:
Основная причина ошибки на самом деле заключалась в том, что я не понимал метод wpdb->подготовка.
В основном он работает как sprintf, и я использовал его по-другому. в любом случае, всем спасибо 🙂