Как посчитать количество записей в таблице
Короткий ответ
Запрос COUNT(*) возвращает одно значение — его достаёт fetchColumn():
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, title TEXT, price INTEGER)');
$pdo->exec("INSERT INTO products (title, price) VALUES ('Tea', 250), ('Coffee', 400), ('Juice', 180), ('Green tea', 300)");
echo (int) $pdo->query('SELECT COUNT(*) FROM products')->fetchColumn();Результат:
4По условию
Со значениями от пользователя — подготовленный запрос:
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE products (id INTEGER PRIMARY KEY, title TEXT, price INTEGER)');
$pdo->exec("INSERT INTO products (title, price) VALUES ('Tea', 250), ('Coffee', 400), ('Juice', 180), ('Green tea', 300)");
$statement = $pdo->prepare('SELECT COUNT(*) FROM products WHERE price > ?');
$statement->execute([200]);
echo (int) $statement->fetchColumn();Результат:
3Не считайте в PHP
count($pdo->query('SELECT * FROM products')->fetchAll()) загружает всю таблицу в память ради одного числа. Считать должна база.
Функции из этого ответа
- PDO — Подключение к базе данных.
- PDOStatement — Подготовленный запрос и его результат.
- intval — Преобразует значение в целое число.