W3docs

connect_errno

Функция mysqli_connect_errno() в PHP: синтаксис, возвращаемое значение и примеры использования.

Функция mysqli_connect_errno() возвращает код ошибки последней попытки подключения MySQLi или 0, если ошибок не было. Это стандартный способ проверить, успешно ли завершился вызов mysqli_connect() (или конструктора new mysqli()) перед выполнением запросов. На этой странице описаны синтаксис, возвращаемое значение, отличия от похожих функций и типичные ошибки при использовании.

Почему важно проверять подключение

Когда подключение MySQLi завершается ошибкой, дескриптор $mysqli всё равно возвращается, но он непригоден для использования. Если пропустить проверку и сразу выполнить запрос, PHP выдаст предупреждение, а скрипт продолжит работу с неисправным подключением — это нередко порождает трудноуловимые ошибки в последующем коде. Вызов mysqli_connect_errno() сразу после подключения позволяет быстро завершить работу с понятным сообщением об ошибке.

Важная деталь: mysqli_connect_errno() — это самостоятельная функция. Она вызывается без аргументов и читает глобальное состояние последней попытки подключения, а не конкретный объект соединения.

Синтаксис

mysqli_connect_errno(): int
ПараметрыОтсутствуют.
Возвращаемое значениеint: код ошибки (errno) последней попытки подключения или 0, если последняя попытка была успешной.

Числовой код соответствует номеру ошибки клиента MySQL/MariaDB — например, 1045 для доступ запрещён или 2002 для соединение отклонено. Для получения читаемого сообщения используйте mysqli_connect_error().

Базовое использование (процедурный стиль)

Вызывайте функцию сразу после mysqli_connect() и завершайте выполнение, если значение ненулевое:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit();
}

echo "Connected successfully.";
// execute queries using $mysqli

mysqli_close($mysqli);
?>

Если учётные данные неверны, функция выведет что-то вроде Failed to connect to MySQL: Access denied for user 'username'@'localhost' и остановит выполнение. При успехе будет выведено Connected successfully. Поскольку код ошибки является истинным только при ненулевом значении, конструкция if (mysqli_connect_errno()) читается естественно: «если произошла ошибка».

Объектно-ориентированный стиль

При использовании класса mysqli аналогом mysqli_connect_errno() является свойство connect_errno объекта. Читайте его так же — сразу после создания объекта:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    exit();
}

echo "Connected successfully.";
// execute queries using $mysqli

$mysqli->close();
?>

Здесь $mysqli->connect_errno содержит числовой код, а $mysqli->connect_error — сообщение об ошибке. Их сочетание (например, (1045) Access denied...) упрощает поиск по записям журнала.

connect_errno и похожие функции

Функции для ошибок подключения легко перепутать с общими функциями обработки ошибок MySQLi. Они сообщают о разных вещах:

Функция / свойствоО чём сообщаетКогда использовать
mysqli_connect_errno()Последняя попытка подключенияСразу после подключения
mysqli_connect_error()Последняя попытка подключения (сообщение)Для отображения читаемой ошибки подключения
mysqli_errno()Последний запрос на открытом соединенииПосле mysqli_query() и т. д.
mysqli_error()Последний запрос (сообщение)Для отображения читаемой ошибки запроса

Короче говоря: используйте connect_errno/connect_error для рукопожатия при подключении, а errno/error — для запросов после установки соединения.

Типичные ошибки

  • Функция отражает только последнюю попытку. Если открыто несколько соединений, mysqli_connect_errno() сообщает о последнем из них. Для точного контроля в объектно-ориентированном коде предпочтительнее использовать $mysqli->connect_errno.
  • Проверяйте до первого запроса, а не после. После выполнения запроса mysqli_connect_errno() по-прежнему отражает попытку подключения, но путаница с mysqli_errno() приводит к ошибкам.
  • Достаточно проверки на истинность. Сравнивать код с конкретным числом нужно редко; конструкция if (mysqli_connect_errno()) охватывает все сбои.
  • Рассмотрите исключения. Начиная с PHP 8.1, MySQLi по умолчанию выбрасывает mysqli_sql_exception при ошибках (mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)), поэтому неудачное подключение порождает исключение вместо возврата неработающего дескриптора. В этом режиме оберните подключение в try/catch вместо проверки connect_errno.

Связанные функции

Заключение

mysqli_connect_errno() — это быстрый и надёжный способ проверить, успешно ли установлено соединение MySQLi: ненулевой результат означает сбой рукопожатия, 0 — что можно выполнять запросы. Используйте её вместе с mysqli_connect_error() для читаемых сообщений, не путайте с mysqli_errno() на уровне запросов, а в PHP 8.1+ рассмотрите try/catch с режимом исключений как современную альтернативу.

Практика

Практика
Что делает функция 'connect_errno' в PHP?
Что делает функция 'connect_errno' в PHP?
Was this page helpful?