error_list
Функция mysqli_error_list() в PHP: возвращает array ошибок последнего вызова MySQLi с кодом, SQLSTATE и сообщением.
Функция mysqli_error_list() возвращает array ошибок, возникших во время последнего вызова MySQLi для указанного соединения. В отличие от mysqli_error(), которая возвращает только последнее сообщение об ошибке в виде string, mysqli_error_list() возвращает все ошибки этой операции — каждую в виде ассоциативного array, содержащего номер ошибки, код SQLSTATE и читаемое сообщение. На этой странице объясняется синтаксис, структура возвращаемых данных и примеры практического применения.
Синтаксис
mysqli_error_list(mysqli $mysql): arrayВ объектно-ориентированном стиле вместо этого используется свойство только для чтения error_list:
$mysqli->error_list;Параметры
$mysql— Объект соединения MySQLi, возвращённый функциейmysqli_connect()(илиmysqli_init()/new mysqli()).
Возвращаемое значение
Array ассоциативных array. Array пуст, если ошибок не возникло. Каждый элемент содержит три ключа:
| Ключ | Тип | Описание |
|---|---|---|
errno | int | Номер ошибки MySQL (например, 1146 — «таблица не существует»). |
sqlstate | string | Пятисимвольный код ошибки SQLSTATE (например, 42S02). |
error | string | Текст сообщения об ошибке. |
Базовый пример
Функцию mysqli_error_list() следует вызывать сразу после операции, которую вы хотите проверить — как правило, когда запрос завершился неудачей:
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
$error_list = mysqli_error_list($mysqli);
foreach ($error_list as $error) {
echo "Failed to execute query. Error message: " . $error['error'] . "\n";
}
exit();
}
mysqli_close($mysqli);
?>Здесь мы устанавливаем соединение, выполняем запрос и проверяем результат. Если mysqli_query() возвращает false, мы вызываем mysqli_error_list() и перебираем возвращённый array, выводя сообщение об ошибке каждого элемента перед завершением работы скрипта. Если запрос выполняется успешно, цикл просто не запускается, поскольку array пуст.
Чтение кода ошибки и SQLSTATE
Поскольку каждый элемент является ассоциативным array, вы можете считывать числовой код и SQLSTATE вместе с сообщением — это полезно для ветвления по конкретным сбоям вместо разбора текста сообщения:
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);
if (!$result) {
$error_list = mysqli_error_list($mysqli);
foreach ($error_list as $error) {
echo "Failed to execute query. Error message: " . $error['error'] . "\n";
echo "Error code: " . $error['errno'] . "\n";
echo "SQLSTATE error code: " . $error['sqlstate'] . "\n";
}
exit();
}
mysqli_close($mysqli);
?>Этот пример расширяет базовый, выводя числовой errno и код sqlstate для каждой ошибки, что даёт полный диагностический контекст.
Объектно-ориентированный стиль
Если соединение создаётся с помощью new mysqli(), используйте свойство error_list:
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if (!$mysqli->query("SELECT * FROM missing_table")) {
foreach ($mysqli->error_list as $error) {
echo "[{$error['errno']}] {$error['sqlstate']}: {$error['error']}\n";
}
}
$mysqli->close();
?>mysqli_error_list() и связанные функции
mysqli_error()— возвращает только последнее сообщение об ошибке в виде string. Используйте её, когда достаточно одного сообщения.mysqli_errno()— возвращает номер ошибки последнего вызова.mysqli_error_list()— возвращает все ошибки последнего вызова, каждую сerrno,sqlstateиerror. Используйте её, когда одна операция может вызвать несколько проблем.
Особенности
- Список отражает только самый последний вызов MySQLi для данного соединения. Захватывайте его сразу после неудавшейся операции — следующий успешный вызов его очистит.
- Успешная операция возвращает пустой array, а не
falseилиnull, поэтому проверяйте условиемif (!$result)(или проверяйтеmysqli_errno()), прежде чем предполагать наличие ошибок. - При сбое соединения шаг подключения завершается неудачей до получения рабочего объекта — в этом случае используйте
mysqli_connect_error().
Заключение
mysqli_error_list() предоставляет структурированный доступ ко всем ошибкам последней операции MySQLi, включая номер ошибки, SQLSTATE и сообщение. Используйте её, когда вам нужна более детальная диагностика, чем даёт mysqli_error(). Для более широкой обработки ошибок PHP смотрите обработку ошибок PHP и обзор mysqli.