Menghitung jumlah baris yang dikembalikan dari db_query () dengan pernyataan "SELECT"


8

Bagaimana cara menemukan jumlah baris yang dikembalikan db_query()untuk SELECTpernyataan, atau yang setara dengan mysql_num_rows()?

Saya menggunakan MySQL.

Jawaban:


6

Jika Anda melihat db_result()dokumentasi untuk 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;
}

Saya juga melihat bahwa Anda dapat melakukan ini di Drupal 6:

$num_rows = db_result(
  db_query("SELECT COUNT(*) FROM {node} WHERE type = '%s'", $type->type)
);

Sepertinya Anda bisa melakukannya:

// Execute your query.
$result = db_query($your_query);
// Use mysql_num_rows() on the result set.
$num_rows = mysql_num_rows($result);

mysql_num_rows? Ya saya melihat sesuatu seperti di internet juga. Ini akan dilakukan. Ini bagus!
— AgA

mysql_num_rows sudah tidak digunakan lagi di php 5.5.0 ke atas, jadi kita harus menggunakan alternatif yang tersedia di masa depan.
— Scott Lahteine

dan db_result tidak digunakan lagi dalam Drupal 7
— wranvaud

@Drilix - Jika melihat pertanyaan itu ditandai dengan drupal 6 bukan 7.
— Cyclonecode

6
$res = db_query("SELECT title FROM {node} WHERE  status = '%d'",  1);

db_query()mengembalikan objek, dan Anda dapat memeriksa jumlah baris menggunakan $res->num_rows.


1

Itu tergantung apakah Anda membutuhkan jumlah baris sebelum mengulang pada set hasil atau tidak.

Jika Anda membutuhkannya sebelumnya, Anda biasanya membuat SELECT COUNT(*)kueri dengan argumen yang sama seperti kueri pertama Anda dan gunakan db_result()untuk mengambilnya.

Jika Anda membutuhkannya setelah itu, cukup masukkan variabel yang akan Anda tambahkan selama loop Anda:

$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++;
} 

1
Looping adalah semua yang ingin saya hindari. Saya juga ingin menghindari permintaan lain ..
— AgA

Jika demikian, Anda harus menentukan ini dalam pertanyaan Anda untuk menghindari kekecewaan dengan jawaban dan
— menurunkannya

0

Untuk Drupal 7 dapat Anda gunakan

$result = db_query($query);
$result->rowCount();

Untuk Drupal 7, INI adalah jalan yang harus ditempuh.
— stefgosselin

Tidak, karena rowCount()hanya untuk kueri yang memengaruhi baris seperti INSERT / UPDATE / DELETE. Lihat diskusi di drupal.org/node/1286238
— Daniel Vérité
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.