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