PHP является одним из самых популярных языков программирования для веб-разработки. Одна из его основных задач - взаимодействие с базами данных. Чаще всего для хранения данных используется СУБД MySQL. При работе с данными важно уметь определять их количество. В этой статье мы подробно разберем, как посчитать количество строк в результате SQL-запроса в PHP с помощью функции mysql_num_rows.
Основы работы mysql_num_rows
Функция mysql_num_rows() позволяет получить количество строк в результате запроса к базе данных MySQL. Она принимает в качестве параметра ресурс запроса $result и возвращает целое число - количество найденных строк.
Рассмотрим базовое использование на примере подсчета строк в таблице:
$link = mysqli_connect("localhost", "user", "password", "database"); $query = "SELECT * FROM table"; $result = mysqli_query($link, $query); $row_cnt = mysql_num_rows($result); echo $row_cnt;
Здесь мы подключились к базе данных, выполнили запрос и передали результат в mysql_num_rows(), получив общее количество строк. Этот простой прием позволяет быстро узнать размер любой таблицы.
Работа с параметром link_identifier
В более ранних версиях PHP функция mysql_num_rows() принимала второй необязательный параметр - идентификатор соединения $link_identifier. Сейчас этот параметр устарел и использовать его не рекомендуется.
Возвращаемое значение
Функция mysql_num_rows() возвращает количество найденных строк в виде целого числа. Если запрос не вернул ни одной строки, будет возвращено значение 0.
В случае ошибки запроса функция вернет FALSE. Поэтому важно проверять возвращаемое значение перед дальнейшей работой.
Работа с NULL значениями
Если в столбце присутствуют NULL значения, они также будут посчитаны. Для исключения NULL из подсчета можно воспользоваться конструкцией COUNT(column) в самом SQL-запросе.
Расширенные примеры использования mysql_num_rows
Рассмотрим более сложные случаи применения mysql_num_rows для подсчета количества строк в PHP.
Подсчет с условием WHERE
$sql = "SELECT * FROM table WHERE column = 'value'"; $result = mysqli_query($link, $sql); $row_cnt = mysql_num_rows($result);
Здесь мы ограничили выборку условием в WHERE, и функция посчитает количество строк, удовлетворяющих этому условию.
Использование с LIMIT
$sql = "SELECT * FROM table LIMIT 10"; $result = mysqli_query($link, $sql); $row_cnt = mysql_num_rows($result);
LIMIT ограничивает вывод первых N строк. Но mysql_num_rows посчитает общее количество строк, которое могло бы быть возвращено без LIMIT.
Подсчет при JOIN
$sql = "SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.table1_id"; $result = mysqli_query($link, $sql); $row_cnt = mysql_num_rows($result);
Запрос с JOIN также можно передать в mysql_num_rows для получения количества строк результата.