我试过搜索,但没有找到符合我的情况的好答案。
我有一个由drupal管理的数据库结构。我希望将该结构应用到同一服务器上的另一个上下文中,生成一个php文件,该文件对数据库进行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脚本连接到完全相同的服务器和db,但是当我发送查询时,我使用了这个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我真的不知道出了什么问题,也许你能帮我解决这个问题?提前感谢您的帮助。
发布于 2014-02-04 17:39:08
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 DESChttps://stackoverflow.com/questions/21559269
复制相似问题