为什么要避免使用 SQL?
如果您想获取有关数据库中内容的信息,例如所有类型 x 的节点,那么获取它的唯一方法是通过 SQL 查询,除非您已经提取了数据。
像这样的查询
db_query("SELECT title, nid FROM {node} WHERE type = 'x';");
不应该是破坏你表现的东西。
编辑:
您提供的链接来自 Drupal 7,因此您必须小心阅读。原因是在 Drupal 7 中,它不仅可以使用db_query
它基本上是 php 函数的包装器mysql_query
,pg_query
. 它有点不同,使用它,您不必使用 db_specific 代码。无论如何,Drupal 7 中的新东西有点像 ORM。我没有详细阅读过它,但想法是您可以使用对象上的命令构建查询。这可能就是你所追求的。然而,Drupal 7 还没有为生产站点做好准备。仍然存在许多关键问题和安全问题。所以这在相当长的一段时间内是不可能的。
编辑2:
如果你想获得节点标题和正文,这就是你应该做的:
$type = 'x';
$query = db_query("SELECT r.nid, r.title, r.body FROM {node} AS n
LEFT JOIN {node_revisions} AS r ON r.nid = n.nid
WHERE type = '%s';", array($type));
$nodes = array();
while ($node = db_fetch_object($query)) {
$nodes[$node->nid] = $node;
}
如果要从数据库中提取数组而不是对象,则可以使用 db_fetch_array 而不是 db_fetch_object`。