Drupal 7 / Views mysql语法错误

时间:2014-02-04 17:25:43

标签: php mysql sql drupal-7 drupal-views

我尝试过搜索,但找不到与我的情况相符的好答案。

我有一个由drupal管理的数据库结构。我希望将该结构用于同一服务器上的另一个上下文,制作一个php文件,对db进行sql查询,并将结果提取到不受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

我真的不知道出了什么问题,也许你可以帮我解决这个问题?提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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