2011-03-03 113 views
0

什麼是做到這一點的最好方法是什麼?我已經回落到做在結果while()循環和抽絲最後一個,因爲它的推移,但這似乎有點那個,不雅觀。 D7在這裏提供了一些幫助,但是對於D6有沒有什麼建議?謝謝!正從一個Drupal的最後一個項目db_fetch_object

回答

1

在一般的情況下(如沒有發動機的提示爲MySQL),使用:

$query = 'SELECT nid, title from {node} WHERE type="page"'; 
$query_count = 'SELECT count(*) from {node} WHERE type="page"'; 
$count = db_result(db_query($query_count)); // $query_count 
$last_record = db_fetch_object(db_query_range($query, $count-1, 1)); 

如果查詢中使用排序,只需使用 「反序」:

$query = 'SELECT nid, title from {node} WHERE type="page" ORDER BY nid ASC'; 
// ... 
$counterquery = 'SELECT nid, title from {node} WHERE type="page" ORDER BY nid DESC LIMIT 0,1'; 
$last_record = db_fetch_object(db_query($counterquery)); 
+0

如果什麼人創建了另一個節點,而這是怎麼回事?這不是交易性的。 – Rimian 2011-03-03 11:49:35

+0

然後看第二個例子。 – Nikit 2011-03-05 00:28:38

2

爲什麼不扭轉您的查詢的順序和限制爲1並得到那個?

喜歡的東西:

$result = db_query_range("SELECT * FROM {table} ORDER BY field DESC", 0, 1);

http://api.drupal.org/api/drupal/includes--database.mysql.inc/function/db_query_range/6

+0

Thx;好主意,但不完全。一個更好的問題陳述:我已經有了一個時間戳項的表格,我想在表中的N個最近的項目。但是,可能有關係 - 如果我在尋找5項,第6項可以具有相同的時間爲5號。所以,我的計劃是獲得前五名,獲得第5的時間戳,然後重新進行查詢來獲取所有的時間戳項直到值(在這種情況下,獲得第6項)。因此,我可能以上的方式,至少似乎工作。但是現在@rimian讓我擔心這一切的交易方面。思考? – 2011-03-04 01:49:44

相關問題