Перейти к содержимому

вывод_отладочной_информации

В этой статье мы сосредоточимся на функциях mysqli_error() и mysqli_report() в PHP, которые используются для перехвата и управления деталями ошибок подключения MySQLi. Мы предоставим вам обзор этих функций, принцип их работы и примеры их применения.

Введение в функции mysqli_error() и mysqli_report()

Функции mysqli_error() и mysqli_report() являются встроенными функциями PHP, предназначенными для перехвата деталей ошибок подключения MySQLi. Важно: mysqli_report() позволяет настроить поведение MySQLi при возникновении ошибок (например, выброс исключений или их логирование), тогда как mysqli_error() возвращает сообщение об ошибке от последней операции MySQLi. Обратите внимание, что mysqli_report() является глобальной и влияет на все последующие вызовы MySQLi в скрипте. Эти функции необходимы для отладки подключений MySQLi и мониторинга их состояния в современных PHP-приложениях.

Как использовать функции mysqli_error() и mysqli_report()

Использование функций mysqli_error() и mysqli_report() очень просто. Вам просто нужно вызвать их для действительного объекта подключения MySQLi. Вот пример:

Как использовать mysqli_error() и mysqli_report()?

php
<?php
// Configure error reporting behavior (global for this script)
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = mysqli_connect("localhost", "username", "password", "database");
} catch (mysqli_sql_exception $e) {
    die('Connection failed: ' . $e->getMessage());
}

// execute queries using the connection

// Check for errors after operations
if (mysqli_error($mysqli)) {
    echo 'Error details: ' . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

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

Расширенное использование

Функцию mysqli_error() можно также использовать в более сложных сценариях. Например, с её помощью можно перехватывать детали ошибок для конкретных подключений MySQLi. Вот пример:

Расширенное использование PHP mysqli_error()

php
<?php
$mysqli1 = mysqli_connect("localhost", "username", "password", "database1");
$mysqli2 = mysqli_connect("localhost", "username", "password", "database2");

if ($mysqli1 === false || $mysqli2 === false) {
    die('Connection failed: ' . mysqli_connect_error());
}

// execute queries using the first connection

if (mysqli_error($mysqli1)) {
    echo 'Error details for connection 1: ' . mysqli_error($mysqli1);
}

// execute queries using the second connection

if (mysqli_error($mysqli2)) {
    echo 'Error details for connection 2: ' . mysqli_error($mysqli2);
}

mysqli_close($mysqli1);
mysqli_close($mysqli2);
?>

В этом примере мы создаем два объекта MySQLi и подключаемся к двум разным базам данных MySQL с указанием имени пользователя и пароля. Затем мы можем выполнять запросы с использованием каждого подключения. Наконец, мы вызываем mysqli_error() для каждого подключения, чтобы перехватить детали ошибок. Внимание: Логирование отладки может привести к значительным накладным расходам на производительность и может раскрыть конфиденциальную информацию. Всегда удаляйте или отключайте эти вызовы в производственных средах.

Заключение

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

Практика

В PHP какие функции используются для вывода отладочной информации?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.