2015-08-19 3 views
0

Я создаю сайт Wordpress и подключается к базе данных MySQL. Я использую класс wordpress wpdb (https://codex.wordpress.org/Class_Reference/wpdb) для взаимодействия с базой данных. С этим классом я могу запросить TABLES моей базы данных, но не Views.

Мне нужно уметь выбирать виды моей базы данных. Это что-то, что недопустимо с wpdb, или мой код просто не так? Есть ли способ запросить представления так же, как я могу запрашивать таблицы с помощью wpdb?

Я пробовал использовать функцию запроса, а также рассматривал представление так же, как я рассматриваю таблицу, но это не работает. Он возвращает пустой.

Метод запроса:

$test = $mydb->query( 
$mydb->prepare( 
" 
     SELECT name FROM $mydb->$view_name 
WHERE id = 1" 
) 
); 

echo $test; //returns empty; should return a name 

метод Таблица:

$test = $mydb->get_var(
"select name from $view_name WHERE id = 1" 
); 

echo $test; //returns empty; should return a name 

Любые предложения? Могу ли я подключиться к моей базе данных, используя что-то, кроме $ wpdb (позволяет Wordpress это?).

+0

'' 'name''' представляется зарезервированным словом в MySQL ([ссылка] (https://dev.mysql.com/doc/refman/5.7/en/keywords.html)). Попробуйте окружить его back-ticks (') вот так. Вы должны видеть некоторые ошибки, вы следите за журналами? Кроме того, если у вас есть сомнения в ваших запросах, вы можете просто скопировать исходный запрос и выполнить его в phpMyAdmin или любой другой инструмент, который вы используете для доступа к своей базе данных вручную. – Avalanche

+0

Ах! Вы исправили мою проблему! Вероятно, вы правы в том, что «имя» зарезервировано, но другая проблема, которую я обнаружил, заключалась в том, что мой взгляд был назван тем, что вызвало ошибку! Я попытался выбрать свое представление в phpMyAdmin, и это была (первая) проблема. (Для потомков мое мнение называлось «broccoli-and-roots-1price», и это вызвало ошибку). Спасибо! – Mel

+1

@Avalanche Вы решили мою проблему, поэтому я могу присудить вам Принятый ответ, если вы отправляете ответ, если хотите! – Mel

ответ

0

name похоже зарезервированное слово в MySQL (reference). Попробуйте окружая его с обратными клещами (`), как это:

SELECT `name` FROM ... 

Вы должны видеть некоторые ошибки, вы следите за бревна? Кроме того, если у вас есть сомнения в ваших запросах, вы можете просто скопировать необработанный запрос и выполнить его в phpMyAdmin или любой другой инструмент, который вы используете для доступа к своей базе данных вручную.

+0

обратные тики, конечно! Мне нужно помнить, чтобы использовать обратные тики, чтобы избежать ошибок в будущем! – Mel