Почему этот запрос WordPress $ wpdb не работает? - PullRequest
0 голосов
/ 16 июня 2010

Я делаю следующее:

$type = 'attachment';
$images = $wpdb->get_results($wpdb->prepare('

                SELECT p.*
                FROM wp_%d_posts p
                WHERE p.post_parent =%d
                AND p.post_type = "%s"


    ', $blog_id, $page->ID, $type),OBJECT);


var_dump($images);  

Если я уберу строку 'AND p.post_type = "% s" ", я получу возвращенные результаты, в противном случае я получу пустой массив. Если я запускаю запрос непосредственно к БД в клиенте mysql, я получаю результаты.

Нет ошибки, просто пустой набор результатов. Я делаю похожие запросы по всему файлу, и они работают, поэтому я не ищу ответы в стиле «не делай так». Мне просто нужно понять, почему это не работает, и исправить это.

PHP 5.3, MYSQL 5.1. WordPress MU 2.9.2

1 Ответ

0 голосов
/ 16 июня 2010

Не цитируйте "%s". С сайта WordPress: «Обратите внимание, что вам не нужно беспокоиться о заключении в кавычки строк. Вместо того, чтобы передавать переменные непосредственно в SQL-запрос, используйте заполнитель %s для строк и размещенный %d для целых чисел».

Пример:

$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id ) );

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