COUNT(*)
の値を取得する方法にはいくつかのオプションがあります SQLから。最も簡単な3つはおそらくこれです:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;
または列エイリアスを使用する:
$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;
または数値配列を使用する:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;
PHP 8.1を使用している場合は、さらに簡単に行うことができます:
$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_column($result);
echo $count;
// or using OO style
echo $con->query("SELECT COUNT(*) FROM news")->fetch_column();
mysqli_num_rows
は使用しないでください Web上のいくつかの場所で提案されているように、データベース内のレコードをカウントします。この関数はほとんど使用されておらず、レコードのカウントは間違いなくそれらの1つではありません。 mysqli_num_rows
の使用 MySQLにすべてを取得するように依頼します データベースからの一致するレコード。これは非常にリソースを消費する可能性があります。レコードをカウントするジョブをMySQLに委任してから、私の答えに示されているように、PHPで戻り値を取得する方がはるかに優れています。
また、コードをよりクリーンで読みやすくするOOPを学ぶことをお勧めします。 OOPでも同じことが、次のように実行できます。
$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;
クエリで変数を使用する場合は、同様のことを実行できますが、プリペアドステートメントを使用します。
$sql = "SELECT COUNT(*) FROM news WHERE category=?";
$stmt = $con->prepare($sql);
$stmt->bind_param('s', $category);
$stmt->execute();
$count = $stmt->get_result()->fetch_row()[0];
echo $count;