Как ловить предупреждения для mysqli_connect()
пример
if (!$connection2 = mysqli_connect($host, $username, $password, $name)){
die('MySQL ERROR: ' . mysql_error());
}
ИЛИ ЖЕ
$connection2 = mysqli_connect($host, $username, $password, $name);
if (!$connection2){
die('MySQL ERROR: ' . mysql_error());
}
Итак, я пытаюсь проверить mysqli_connect()
метод, указав неверный хост, имя пользователя и т. д. но когда я положил в него неправильные переменные, такие как я положил hostlocal
вместо localhost
, это дает мне эту ошибку
Предупреждение: mysqli_connect (): php_network_getaddresses: getaddrinfo не удалось:
Такой хост не известен.
Я знаю, что ставлю не тот хост, но хочу уловить ошибки соответствующим образом. Приличное сообщение было бы идеально, как:
К сожалению, введенные вами данные неверны!
Итак, как я могу получить это сообщение вместо предупреждения, спасибо
Для одного, mysql_error()
не даст тебе ничего Это часть другой библиотеки, mysql_
, который не взаимозаменяем с новым и улучшенным mysqli_
, При этом вы можете настроить MySQLi на выдачу исключений, которые затем вы можете перехватить.
Предупреждения будут по-прежнему записываться в журнал, если включено ведение журнала ошибок (как и должно быть!). Но вы можете уловить ошибку и отобразить что-то более удобное для пользователя на странице, если не удается установить соединение. Вы никогда не должны отображать реальные сообщения об ошибках в живом проекте — в разработке это хорошо, но никогда на любой живой среде.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // Set MySQLi to throw exceptions
try {
$connection2 = mysqli_connect($host, $username, $password, $name);
} catch (mysqli_sql_exception $e) {
// $e is the exception, you can use it as you wish
die("Unfortunately, the details you entered for connection are incorrect!");
}
Это, однако, будет регистрировать то же предупреждение, что и вы,
php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестна
хотя это не будет отображаться на странице.
Вы Можно подавить предупреждение (чтобы оно не регистрировалось), добавив @
, но я не рекомендую его, если вы явно не реализуете свою собственную обработку ошибок / отчетность. Ошибки должны быть зарегистрированы.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // Set MySQLi to throw exceptions
try {
$connection2 = @mysqli_connect($host, $username, $password, $name);
} catch (mysqli_sql_exception $e) {
error_log($e->getMessage()); // Log the error manually
die("Unfortunately, the details you entered for connection are incorrect!");
}
Других решений пока нет …