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


8

どのように私はに返される行数の合計見つけないdb_query()ためにSELECTステートメント、または同等のものをmysql_num_rows()

MySQLを使用しています。

回答:


6

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);

mysql_num_rows?はい、インターネットのようなものも見ました。これで十分です。これは素晴らしい !
AgA 2011

mysql_num_rowsはphp 5.5.0以降では非推奨であるため、将来的には利用可能な代替手段を使用する必要があります。
Scott Lahteine、2014

そしてdb_resultはDrupal 7で非推奨になりました
wranvaud 2017年

@Drilix -それはDrupalの6ない7でタグ付けされた質問を見れば
Cyclonecode

6
$res = db_query("SELECT title FROM {node} WHERE  status = '%d'",  1);

db_query()オブジェクトを返し、を使用して行の総数を確認できます$res->num_rows


1

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

以前に必要な場合は、通常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
ループは避けたいだけです。私はまた、別のクエリを避けたい...
AgAを

もしそうなら、回答に失望して
反対票を投じ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.