При выполнении SQL-запроса к базе данных в качестве результата выполнения могут быть возвращены строки и столбцы таблицы. Также может быть возвращено пустое значение, если в таблице не найдены данные, соответствующие запросу.
Обычным алгоритмом обработки полученного ответа от базы данных является построчное извлечение результата SQL-запроса и обработка каждой строки как массива или объекта.
Но для некоторых ситуаций это является излишним — иногда нам нужно только узнать, найдено ли что-то в базе данных или возвращён пустой результат.
Для определения, является ли результат запроса к базе данных пустым можно использовать функцию mysqli_num_rows(). Эта функция подсчитывает количество строк в возвращённом результате. Если количество строк равно 0, значит результат пуст. Если количество строк больше нуля, значит результат не пуст.
Пример использования функции mysqli_num_rows() — данный скрипт проверяет, имеется ли в таблице столбец с указанным именем. Если результат выполнения SQL-запроса пуст, значит столбец отсутствует. Если количество строк в результатах выполнения SQL-запроса больше нуля, значит столбец существует:
<?php
$db_user = 'root';
$db_password = '';
$db_name = 'TestDB';
$mysqli = new mysqli("localhost", $db_user, $db_password, $db_name);
if ($mysqli->connect_errno)
{
printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
exit();
}
$query = "SHOW COLUMNS FROM TestTABLE WHERE field = 'test_column';";
$result = $mysqli->query($query);
if (mysqli_num_rows($result)==0)
{
echo 'The column does not exist' . PHP_EOL;
}
else
{
echo 'The column exists' . PHP_EOL;
}
Примечание: этот метод может не сработать, если SQL-запрос завершился ошибкой. То есть вам отдельно нужно проверять, не завершился ли запрос к базе данных ошибкой. Если вы не проверяете результат SQL-запроса на ошибку, то в возвращаемых данных может содержаться информация об ошибке и количество строк будет не равно нулю. Это может нарушить логику работы вашего скрипта.
Примечание 2: В более старых источниках вы можете увидеть упоминание функции mysql_num_rows. Данная функция на текущий момент является устаревшей, вместо неё следует использовать функцию mysqli_num_rows().
Связанные статьи:
- Как вывести список пользователей MySQL / MariaDB и их привилегии (с помощью клиента СУБД и PHP) (100%)
- PHP не отображает эмодзи из базы данных MySQL / MariaDB (РЕШЕНО) (100%)
- Ошибка «PHP Fatal error: Uncaught mysqli_sql_exception: No database selected» (РЕШЕНО) (100%)
- Нужно ли закрывать соединения с MySQL с помощью $mysqli->close() в PHP скриптах. Нужно ли использовать $result->free() (100%)
- Изменение в директиве upload_max_filesize в php.ini на Linux не имеют эффекта (разрешение проблемы) (50%)
- Как искать в phpMyAdmin (RANDOM - 50%)
