Réponses:
Si vous regardez la db_result()
documentation de 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;
}
J'ai également vu que vous pouviez le faire dans Drupal 6:
$num_rows = db_result(
db_query("SELECT COUNT(*) FROM {node} WHERE type = '%s'", $type->type)
);
Il semble que vous puissiez simplement faire:
// Execute your query.
$result = db_query($your_query);
// Use mysql_num_rows() on the result set.
$num_rows = mysql_num_rows($result);
Cela dépend si vous avez besoin du nombre de lignes avant de boucler sur le jeu de résultats ou non.
Si vous en avez besoin auparavant, vous effectuez généralement une SELECT COUNT(*)
requête avec les mêmes arguments que votre première requête et utilisez db_result()
pour la récupérer.
Si vous en avez besoin après, mettez simplement une variable que vous incrémenterez pendant votre boucle:
$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++;
}
Pour Drupal 7, vous pouvez utiliser
$result = db_query($query);
$result->rowCount();
rowCount()
ne concerne que les requêtes qui affectent des lignes telles que INSERT / UPDATE / DELETE. Voir la discussion sur drupal.org/node/1286238