@big_hasan

MySQLi: зачем нужна проверка соединения connect_errno?

UPD: Пробовал и без проверки на ошибку запускать - все равно выводились те же ошибки. Моя ошибка в том, что я запускал это из-под CMS)) Если запустить "голый" php-файлик, то все проверки прекрасно работают.
*********************************************************************************
Пример из документации: php.net/manual/ru/mysqli.quickstart.connections.php
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";

$mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);
if ($mysqli->connect_errno) {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

echo $mysqli->host_info . "\n";
?>


Пробую запускать у себя не изменяя параметры "localhost", "user", "password", "database" (то есть попытка подключения к несуществующей базе) - вместо страницы в браузере появляется ошибка
Error : mysqli::mysqli(): (28000/1045): Access denied for user 'user'@'localhost' (using password: YES)

Мне не понятно, зачем нужна проверка
if ($mysqli->connect_errno) {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

если при попытке соединения с несуществующей базой этот механизм все равно не срабатывает?

P.S.: извиняйте, если вопрос глупый и наивный - только начал изучать mysqli (да и вообще PHP)
  • Вопрос задан
  • 1273 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Все правильно, никакая проверка здесь не нужна.

Ошибки должен отлавливать обработчик ошибок. Который уже будет сам решать - что показать на экране, а что записать в лог.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tkutru
@tkutru
A programming cat.
Проверка на то, что подключение вообще возможно. Она сработает, если вы отключите сервис mysql и попытаетесь выполнить свой скрипт.

Error : mysqli::mysqli(): (28000/1045): Access denied for user 'user'@'localhost' (using password: YES)

Т.е. сервис работает, просто юзер неверный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы