Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erhalte ich die Anzahl der Zeilen in einer MySQL-Tabelle mit PHP?

Sie haben mehrere Möglichkeiten, wie Sie den Wert von COUNT(*) erhalten aus dem SQL. Die einfachsten drei sind wahrscheinlich diese:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['COUNT(*)'];
echo $count;

oder mit Spaltenalias:

$sql = "SELECT COUNT(*) as cnt FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_assoc($result)['cnt'];
echo $count;

oder mit numerischem Array:

$sql = "SELECT COUNT(*) FROM news";
$result = mysqli_query($con, $sql);
$count = mysqli_fetch_row($result)[0];
echo $count;

Wenn Sie PHP 8.1 verwenden, können Sie es sogar noch einfacher machen:

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

Verwenden Sie nicht mysqli_num_rows um die Datensätze in der Datenbank zu zählen, wie es an einigen Stellen im Internet vorgeschlagen wird. Diese Funktion hat sehr wenig Nutzen, und das Zählen von Datensätzen gehört definitiv nicht dazu. Verwenden von mysqli_num_rows Sie würden MySQL auffordern, alle abzurufen Abgleichen von Datensätzen aus der Datenbank, was sehr ressourcenintensiv sein kann. Es ist viel besser, die Aufgabe des Zählens von Datensätzen an MySQL zu delegieren und dann einfach den zurückgegebenen Wert in PHP abzurufen, wie in meiner Antwort gezeigt.

Ich würde auch empfehlen, OOP zu lernen, was Ihren Code sauberer und leichter lesbar macht. Das gleiche mit OOP könnte wie folgt gemacht werden:

$sql = "SELECT COUNT(*) FROM news";
$count = $con->query($sql)->fetch_row()[0];
echo $count;

Wenn Ihre Abfrage Variablen verwendet, können Sie ähnlich vorgehen, aber vorbereitete Anweisungen verwenden.

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