В пользовательской функции я делаю следующее:
$exists = $wpdb->query($wpdb->prepare('
SELECT COUNT(*)
FROM wp_%d_gdsr_data_article
WHERE post_id = %d
', $blog_id, $post_id));
$ exists оценивается как 1, даже если запрос не возвращает ни одной строки. Кроме того, var_dump ($ wpdb-> query) возвращает NULL. Кто-нибудь знает, что здесь происходит?
Благодарность,
2 ответа
Из документации:
Функция возвращает целое число, соответствующее количеству затронутых / выбранных строк. Если есть ошибка MySQL, функция вернет ЛОЖЬ. (Примечание: поскольку могут быть возвращены как 0, так и FALSE, убедитесь, что вы используете правильный оператор сравнения: равенство == vs. идентичность ===).
Запрос возвращает 1 строку, поэтому функция query()
возвращает 1
- и всегда будет возвращать 1
для запроса, который вы публикуете в своем вопросе, даже если количество строк, выбранных параметром COUNT
равно 0. Используйте get_var
, get_row
или get_results
, как предлагает TheDeadMedic, чтобы получить фактический результат запроса, который может быть 0
, 1
, 2
и т. Д.
Вместо этого используйте $wpdb->get_var($query)
.
Соответственно, используйте $wpdb->get_row()
для получения одной строки как одного объекта (или массива) и $wpdb->get_results()
для получения набора результатов.
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
$wpdb->query()
следует использовать только для исполняемых запросов, так как он возвращает только количество строк или false, если строк нет.$wpdb->queries
используется только в том случае, если вы определяетеSAVEQUERIES
как истинное.