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.