web-dev-qa-db-ja.com

「SELECT」ステートメントを使用してdb_query()から返された行数をカウントする

SELECTステートメントのdb_query()で返される行の総数、またはmysql_num_rows()に相当する行を見つけるにはどうすればよいですか?

MySQLを使用しています。

8
AgA

db_result() のドキュメントで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;
}

Drupal 6:

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

簡単にできるように見えます:

// 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()はオブジェクトを返し、_$res->num_rows_を使用して行の総数を確認できます。

6
Shad

結果セットでループする前に行数が必要かどうかによって異なります。

以前に必要な場合は、通常、最初のクエリと同じ引数を使用してSELECT COUNT(*)クエリを作成し、 db_result() を使用してそれを取得します。

後で必要になった場合は、ループ中にインクリメントする変数を配置するだけです。

$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

Drupal 7の場合、

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