zaLinux.ru

Как в PHP проверить, что результат SQL-запроса пуст или не пуст


При выполнении 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().


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *