Câu trả lời:
Nếu bạn xem db_result()
tài liệu về Drupal 6:
function db_result($result) {
if ($result && mysql_num_rows($result) > 0) {
// The mysql_fetch_row function has an optional second parameter $row
// but that can't be used for compatibility with Oracle, DB2, etc.
$array = mysql_fetch_row($result);
return $array[0];
}
return FALSE;
}
Tôi cũng thấy rằng bạn có thể làm điều này trong Drupal 6:
$num_rows = db_result(
db_query("SELECT COUNT(*) FROM {node} WHERE type = '%s'", $type->type)
);
Có vẻ như bạn chỉ có thể làm:
// Execute your query.
$result = db_query($your_query);
// Use mysql_num_rows() on the result set.
$num_rows = mysql_num_rows($result);
Nó phụ thuộc vào việc bạn có cần số lượng hàng trước khi lặp trên tập kết quả hay không.
Nếu bạn cần nó trước đây, bạn thường thực hiện một SELECT COUNT(*)
truy vấn có cùng đối số như truy vấn đầu tiên của bạn và sử dụng db_result()
để truy xuất nó.
Nếu bạn cần nó sau, chỉ cần đặt một biến bạn sẽ tăng trong vòng lặp của mình:
$result = db_query("SELECT nid, title FROM {node} WHERE status = 0");
$total_rows = 0;
while ($row = db_fetch_array($result)) {
//Process your results here
//Increment your counter
$total_rows++;
}
Đối với Drupal 7, bạn có thể sử dụng
$result = db_query($query);
$result->rowCount();
rowCount()
chỉ dành cho các truy vấn ảnh hưởng đến các hàng như CHERTN / CẬP NHẬT / XÓA. Xem cuộc thảo luận tại drupal.org/node/1286238