我真的很想知道的是我的查詢是否返回結果,但實際的行計數值會很好。有沒有方法可以說明Drupal 7中SelectQuery結果有多少行?
例子:
$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));
我真的很想知道的是我的查詢是否返回結果,但實際的行計數值會很好。有沒有方法可以說明Drupal 7中SelectQuery結果有多少行?
例子:
$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));
您可以使用查詢的方便的fetchAll()
方法將所有結果加載到數組中,然後將該數組計數爲正常。這將導致只有一個查詢正在執行:
$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));
$results = $query->execute()->fetchAll();
$count = count($results);
foreach ($results as $result) {
// ...
}
您正在尋找:
在您的例子,你可以使用:
$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));
$num_rows=$query->countQuery()->execute()->fetchField();
來算的結果,事後獲取它們:
$result=$query->execute();
因此,有沒有簡單的方法直接從SelectQuery結果做到這一點?真的不希望有兩次查詢數據庫沒有建立另一個查詢對象:( – SomethingOn
我不認爲你需要建立另一個查詢對象 - 你可以使用現有的countQuery後(見編輯的答案),但當然,sql在這個解決方案中執行了兩次...... – Nebel54
我認爲這是更有效的嘗試這個,而不是。
$result = db_select('table_name' ,'t');
$result->fields('t')->execute();
$num_of_results = $result->rowCount();
謝謝!假設有一些方法可以將內容加載到數組中:D – SomethingOn