2011-05-28 66 views
1

我是新來的Drupal 7如何把sql查詢升級到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謝謝。

+0

你從哪兒弄來的?它必須向你展示一個位置來放置它? – alex 2011-05-28 01:29:04

+0

http://2bits.com/articles/simple-previous-next-navigation-node-title.html我想在drupal 7中使用它,謝謝 – runeveryday 2011-05-28 03:43:24

回答

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(),兩者都可以。

+0

我很抱歉,它無法工作。有兩種情況。這是一個錯誤? – runeveryday 2011-05-28 08:03:54

+0

有三個,就像你在查詢中一樣。不,這不是一個錯誤。什麼不工作?有錯誤嗎?總是提供詳細的信息,當有東西不工作... – Berdir 2011-05-28 08:15:45

+0

我的IDE在這一行顯示一個錯誤 - > condition('n.nid',$ current_node-> nid,$ sql_op)但我不知道爲什麼? – runeveryday 2011-05-28 08:17:49

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();