2017-01-02 3 views
1

Я добавил пользовательский элемент Visual Composer и хочу вывести результат запроса. Однако, когда я вывожу этот запрос (1), он дает другие результаты тогда, когда я вывожу этот запрос (2).Wordpress SQL-запрос разных результатов

// declared vars 
global $wpdb; 
$nn = '{{ post_data:ID }}'; 
$nn1 = (string)$nn; 

1) $results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = 526 AND guid like '%pdf'", OBJECT); 
2) $results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn1." AND guid like '%pdf'", OBJECT); 

Когда я вывожу 526 строка (запрос 1) он дает правильный результат, однако я хочу выход быть с вар, потому что каждый пост имеет свой уникальный идентификатор.

Я также попытался поставить вар в строке, так что это не рассматривается как POST_ID

$nn = '{{ post_data:ID }}'; 
$nn1 = (string)$nn; 

Есть идеи, где это не удается?

Что я пытался в то же время:

$nn1 = (string)$nn; 
$nn2 = strval($nn); 
$nn3 = settype($nn, "string"); 

$results1 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn1." AND guid like '%pdf'", OBJECT); 
$results2 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn2." AND guid like '%pdf'", OBJECT); 
$results3 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = ".$nn3." AND guid like '%pdf'", OBJECT); 
$results4 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = %d AND guid like '%pdf'", $nn3, OBJECT); 

Все вышеперечисленное возвращает пустую строку, которая означает, что есть еще что-то не так с варом

Когда я повторяю всю строку его возвращает правильный MySQL запрос:

echo ("SELECT guid FROM wp_posts WHERE post_parent = ".$nn.""); 
//output 
SELECT guid FROM wp_posts WHERE post_parent = 526; 

Когда я выполнить этот запрос, он дает мне правильное решение:

$results6 = $GLOBALS['wpdb']->get_results("SELECT guid FROM wp_posts WHERE post_parent = 526", OBJECT); 
// output 
[6]=>object(stdClass)#8030 (1) { 
["guid"]=> 
string(69) "http://blabla.pdf"} 

Greetz

+0

Я хотел напечатать = 526 (целое число) - отредактированный вопрос –

+0

Ваша переменная '$ nn1' буквально содержит' {{post_data: ID}} ', а не число. – jeroen

+0

Как я могу поместить {{post_data: ID}} в число? –

ответ

0

Ни один из ваших тестов, кажется, не включают в себя один запрос, который я показал, что работает:

$GLOBALS['wpdb']->get_results(
    "SELECT guid FROM wp_posts WHERE post_parent = $nn", 
    OBJECT 
); 

Там нет необходимости делать какие-либо преобразования типов, особенно не в строку. $nn должен содержать int 526.

полное раскрытие информации: Я не являюсь разработчиком WP, и я понятия не имею, как вы получили от до 256, также string(18) "526" кажется очень странным выходом для меня. (groetjes aan de daddykaters!)

+0

Итак, когда я активирую show show для wpdb, он дает следующую ошибку: «У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '{post_data: ID}} И указайте как «% pdf» в строке 1. «Я использую« {{post_data: ID}} »для получить идентификатор сообщения, так работает плагин визуального композитора. (Когда я сбрасываю $ nn, он явно сбрасывает строку со значением, которое соответствует идентификатору сообщения. –

Смежные вопросы