W3docs

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 пуст, если ошибок не возникло. Каждый элемент содержит три ключа:

КлючТипОписание
errnointНомер ошибки MySQL (например, 1146 — «таблица не существует»).
sqlstatestringПятисимвольный код ошибки SQLSTATE (например, 42S02).
errorstringТекст сообщения об ошибке.

Базовый пример

Функцию 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.

Практика

Практика
Какие из следующих вариантов представляют типы ошибок в PHP?
Какие из следующих вариантов представляют типы ошибок в PHP?
Was this page helpful?