我该如何捕捉警告 mysqli_connect()
例
if (!$connection2 = mysqli_connect($host, $username, $password, $name)){
die('MySQL ERROR: ' . mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
要么
$connection2 = mysqli_connect($host, $username, $password, $name);
if (!$connection2){
die('MySQL ERROR: ' . mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
因此,我试图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!");
}
Run Code Online (Sandbox Code Playgroud)
但是,这将记录与您得到的日志相同的警告,
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!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |