Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как посчитать количество записей в таблице

Короткий ответ

Запрос 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 — Преобразует значение в целое число.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.