Antworten:
Wenn Sie sich die db_result()
Dokumentation zu Drupal 6 ansehen :
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 tun können:
$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);
Es hängt davon ab, ob Sie die Anzahl der Zeilen benötigen, bevor Sie die Ergebnismenge durchlaufen oder nicht.
Wenn Sie es zuvor benötigen, erstellen Sie im Allgemeinen eine SELECT COUNT(*)
Abfrage mit denselben Argumenten wie Ihre erste Abfrage und verwenden sie db_result()
zum Abrufen.
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++;
}
Für Drupal 7 können Sie verwenden
$result = db_query($query);
$result->rowCount();
rowCount()
nur für Abfragen gilt, die Zeilen wie INSERT / UPDATE / DELETE betreffen. Siehe die Diskussion unter drupal.org/node/1286238