Почему Wordpress $ wpdb-> query () отвечает 1, когда возвращается 0 строк - PullRequest
4 голосов
/ 07 июня 2010

В пользовательской функции я делаю следующее:

    $exists = $wpdb->query($wpdb->prepare('
    SELECT COUNT(*)
    FROM wp_%d_gdsr_data_article
    WHERE post_id = %d

', $blog_id, $post_id));

$ существующие значения равны 1, даже если запрос не возвращает строки.Кроме того, var_dump ($ wpdb-> query) выдает NULL.Кто-нибудь знает, что здесь происходит?

спасибо,

Ответы [ 2 ]

7 голосов
/ 07 июня 2010

Из документации :

Функция возвращает целое число соответствует количеству строк пострадавших / выбран. Если есть MySQL ошибка, функция вернет FALSE. (Примечание: так как 0 и FALSE могут быть вернулся, убедитесь, что вы используете правильный оператор сравнения: равенство == против идентичности ===).

Запрос возвращает 1 строку, поэтому функция query() возвращает 1 - и всегда возвращает 1 для запроса, который вы отправляете в своем вопросе, даже если количество строк, выбранных COUNT, равно 0 Используйте get_var, get_row или get_results в соответствии с предложением TheDeadMedic, чтобы получить фактический результат запроса, который может быть 0, 1, 2 и т. Д.

6 голосов
/ 07 июня 2010

Вместо этого используйте $wpdb->get_var($query).

Соответственно, используйте $wpdb->get_row(), чтобы извлечь одну строку как отдельный объект (или массив), и $wpdb->get_results(), чтобы получить набор результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...