如何将sql查询升级到drupal 7?

时间:2011-05-28 01:26:51

标签: drupal

我是drupal 7的新手。

$sql = "SELECT nid, title FROM {node} n
    WHERE nid $sql_op %d
    AND type IN (" . implode(',', $quoted_types) . ")
    AND status = 1
    ORDER BY nid $order
    LIMIT 1";
  $result = db_query($sql, $current_node->nid, $type);
  $data = db_fetch_object($result);

如何将上面的sql查询升级到drupal 7谢谢。

2 个答案:

答案 0 :(得分:0)

对于D7,这看起来像这样:

$result = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.nid', $current_node->nid, $sql_op)
  ->condition('type', $type)
  ->condition('status', 1)
  ->orderBy('nid', $order)
  ->range(0, 1)
  ->execute();

$data = $result->fetchObject();

当然,未经测试,请回报是否有效。还要确保使用正确的类型,不确定为什么D6版本对类型使用IN语句,但只有一个$类型。请注意,在上面的代码中,您可以将单个值或值数组传递给condition(),两者都有效。

答案 1 :(得分:0)

试试这个:

$result = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.nid', $current_node->nid, $sql_op)
  ->condition('type', $quoted_types, 'IN')
  ->condition('status', 1)
  ->orderBy('nid', $order)
  ->range(0, 1)
  ->execute();

$data = $result->fetchObject();