2014-02-04 8 views
0

Я пробовал поиск, но не нашел хорошего ответа, соответствующего моему делу.Drupal 7/Views mysql синтаксическая ошибка

У меня есть структура базы данных, управляемая drupal. Я хочу использовать эту структуру в другом контексте на том же сервере, создавая php-файл, который делает SQL-запрос в db и выводит результаты на страницу, не управляемую drupal (в этом конкретном случае drupal больше похож на пользовательский интерфейс для контент-менеджер, чем реальный CMS для дизайна сайта).

Я установил представления и установил параметры и критерии для извлечения данных из полей, которые мне нужны для моего php-скрипта.

Предварительный просмотр показать мне точно поле я спрашиваю, и запрос показано, как это:

SELECT node.title AS node_title, node.nid AS nid, node.created AS node_created, 'node'  AS field_data_field_descrizione_node_entity_type, 'node' AS field_data_field_web_node_entity_type, 'node' AS field_data_field_logo_node_entity_type 
FROM 
{node} node 
WHERE (((node.type IN ('collaborazioni')))) 
ORDER BY node_created DESC 

мне удается установить соединение с точно такой же сервер и БД с PHP скрипт, но когда я отправить запрос я это mysql_error Получать:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL  server version for the right syntax to use near '} node WHERE (((node.status = '1') AND  (node.type IN ('collaborazioni')))) ' at line 3 

Я действительно не знаю, что случилось, может быть, вы можете помочь мне понять это? Спасибо заранее за любую помощь.

+0

Ьги как WHERE node.type IN ('collazioni') –

ответ

0

Drupal использует псевдонимы таблиц в запросе предварительного просмотра представлений. Он заменяется до отправки фактического запроса в базу данных. Часть псевдонима - {node}, которая указывает на таблицу узлов в базе данных, но добавляет префикс таблицы, который вы ввели при установке сайта. Если вы не использовали префикс базы данных, просто удалите часть запроса {node}. Если вы это сделали, вы должны заменить {node} на prefix_node.

Так без префикса должен быть:

SELECT node.title AS node_title, node.nid AS nid, node.created AS node_created, 'node'  AS field_data_field_descrizione_node_entity_type, 'node' AS field_data_field_web_node_entity_type, 'node' AS field_data_field_logo_node_entity_type 
FROM 
node 
WHERE (((node.type IN ('collaborazioni')))) 
ORDER BY node_created DESC 

И с приставкой он должен быть (заменить «префикс» часть запроса с префиксом, который вы использовали, конечно):

SELECT node.title AS node_title, node.nid AS nid, node.created AS node_created, 'node'  AS field_data_field_descrizione_node_entity_type, 'node' AS field_data_field_web_node_entity_type, 'node' AS field_data_field_logo_node_entity_type 
FROM 
prefix_node node 
WHERE (((node.type IN ('collaborazioni')))) 
ORDER BY node_created DESC 
+0

Большое спасибо, что сделал трюк! –

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