it-swarm.com.de

Zählen der Anzahl der von db_query () zurückgegebenen Zeilen mit der Anweisung "SELECT"

Wie finde ich die Gesamtzahl der in db_query() zurückgegebenen Zeilen für die Anweisung SELECT oder das Äquivalent von mysql_num_rows()?

Ich benutze MySQL.

8
AgA

Wenn Sie sich die Dokumentation db_result() für 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;
}

Ich habe auch gesehen, dass Sie dies in Drupal 6:

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

Es sieht so aus, als könnten Sie einfach Folgendes tun:

// Execute your query.
$result = db_query($your_query);
// Use mysql_num_rows() on the result set.
$num_rows = mysql_num_rows($result);
6
Cyclonecode
$res = db_query("SELECT title FROM {node} WHERE  status = '%d'",  1);

db_query() gibt ein Objekt zurück und Sie können die Gesamtzahl der Zeilen mit $res->num_rows überprüfen.

6
Shad

Es hängt davon ab, ob Sie die Anzahl der Zeilen benötigen, bevor Sie die Ergebnismenge durchlaufen oder nicht.

Wenn Sie es vorher benötigen, erstellen Sie im Allgemeinen eine SELECT COUNT(*) - Abfrage mit denselben Argumenten wie Ihre erste Abfrage und verwenden db_result() , um sie abzurufen.

Wenn Sie es später benötigen, geben Sie einfach eine Variable ein, die Sie während Ihrer Schleife erhöhen:

$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
tostinni

Für Drupal 7 können Sie verwenden

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