SELECT
ステートメントのdb_query()
で返される行の総数、またはmysql_num_rows()
に相当する行を見つけるにはどうすればよいですか?
MySQLを使用しています。
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);
_$res = db_query("SELECT title FROM {node} WHERE status = '%d'", 1);
_
db_query()
はオブジェクトを返し、_$res->num_rows
_を使用して行の総数を確認できます。
結果セットでループする前に行数が必要かどうかによって異なります。
以前に必要な場合は、通常、最初のクエリと同じ引数を使用して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++;
}
Drupal 7の場合、
$result = db_query($query);
$result->rowCount();