PHP: различные подходы к проверке, возвращает ли запрос результаты

При работе с PHP и базами данных обычно выполняются запросы и проверяются, возвращают ли они какие-либо результаты. Это гарантирует успешность процесса получения данных и позволяет соответствующим образом обрабатывать результаты. В этой статье мы рассмотрим различные методы проверки того, возвращает ли запрос PHP результаты, а также приведем примеры кода для каждого подхода.

Метод 1: использование mysqli_num_rows()
Функция mysqli_num_rows() обычно используется для определения количества строк, возвращаемых запросом SELECT. Проверив, больше ли количество строк нуля, мы можем сделать вывод, что запрос возвратил результаты. Вот пример:

$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) > 0) {
    // Query has returned results
    while ($row = mysqli_fetch_assoc($result)) {
        // Process each row
    }
} else {
    // Query did not return any results
    echo "No results found.";
}

Метод 2: использование PDO rowCount()
Если вы используете объекты данных PHP (PDO) для операций с базой данных, вы можете использовать метод rowCount() для определения количества строк, возвращаемых запросом. Вот пример:

$query = "SELECT * FROM users";
$result = $pdo->query($query);
if ($result->rowCount() > 0) {
    // Query has returned results
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
        // Process each row
    }
} else {
    // Query did not return any results
    echo "No results found.";
}

Метод 3: выборка первой строки
Другой подход заключается в непосредственном извлечении первой строки, возвращенной запросом, и проверке ее существования. Если это так, мы можем сделать вывод, что запрос возвратил результаты. Вот пример использования mysqli:

$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
if ($row) {
    // Query has returned results
    mysqli_data_seek($result, 0); // Reset the result pointer
    while ($row = mysqli_fetch_assoc($result)) {
        // Process each row
    }
} else {
    // Query did not return any results
    echo "No results found.";
}

Метод 4: использование пустой()
Функция пустой() также может использоваться для проверки того, вернул ли запрос результаты. Передавая полученную строку или набор данных в метод пустой(), мы можем определить, пуст он или нет. Вот пример:

$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
if (!empty($row)) {
    // Query has returned results
    mysqli_data_seek($result, 0); // Reset the result pointer
    while ($row = mysqli_fetch_assoc($result)) {
        // Process each row
    }
} else {
    // Query did not return any results
    echo "No results found.";
}

В этой статье мы рассмотрели несколько методов проверки того, возвращает ли запрос PHP результаты. В зависимости от ваших предпочтений и расширения базы данных, которое вы используете, вы можете выбрать наиболее подходящий подход. Независимо от того, используете ли вы такие функции, как mysqli_num_rows() или rowCount(), прямую выборку первой строки или использование функции пустой(), эти методы дают вам гибкость для эффективной обработки результатов запроса в ваших приложениях PHP.

Помните, что очень важно проверять, вернул ли запрос результаты, чтобы обеспечить целостность и надежность процесса получения данных.