如何在php中显示较少的连接错误内容
How to display less content of connection error in php
我一直在观看 PHP 中关于 MySQL 基本连接的视频。并试图将错误内容从“致命错误:未捕获 mysqli_sql_exception:php_network_getaddresses....”隐藏到例如“错误 2002”。我尝试了一些方法,但它仍然显示整个文本。我的代码:
我也尝试使用 try/catch 块,但它仍然显示整个文本。我使用 vs 代码和 PHP 8.1
<?php
require_once "connect.php";
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
if($connection->connect_errno != 0){
echo "Error ".$connection->connect_errno; // <- this place
//echo mysqli_report($connection->connect_errno);
//die($connection->connect_errno);
}else{
$login = $_POST['username'];
$passw = $_POST['password'];
$connection -> close();
}
?>
////////////////////////////////////////// ////////////////
......
try {
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
...........
它显示了完整的错误消息,因为您确实要求它:
echo 'Caught exception: ', $e->getMessage(), "\n";
如果您想显示数字错误代码,只需这样做:
echo 'Error ', $e->getCode(), "\n";
需要注意的是 mysqli_report() 似乎并没有阻止 all 警告。这感觉像是一个实施监督,但我没有更多关于它的信息。为此,您已经在使用的错误抑制运算符 @
就足够了。
此外,不要忘记在生产服务器中禁用 display_errors
指令。
最后,自 PHP/8.1 以来,Mysqli 默认仅在错误时抛出异常。在早期版本中,您需要明确设置它:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
我一直在观看 PHP 中关于 MySQL 基本连接的视频。并试图将错误内容从“致命错误:未捕获 mysqli_sql_exception:php_network_getaddresses....”隐藏到例如“错误 2002”。我尝试了一些方法,但它仍然显示整个文本。我的代码: 我也尝试使用 try/catch 块,但它仍然显示整个文本。我使用 vs 代码和 PHP 8.1
<?php
require_once "connect.php";
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
if($connection->connect_errno != 0){
echo "Error ".$connection->connect_errno; // <- this place
//echo mysqli_report($connection->connect_errno);
//die($connection->connect_errno);
}else{
$login = $_POST['username'];
$passw = $_POST['password'];
$connection -> close();
}
?>
////////////////////////////////////////// //////////////// ......
try {
$connection = @new mysqli($host,$db_user,$db_passw,$db_name);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
...........
它显示了完整的错误消息,因为您确实要求它:
echo 'Caught exception: ', $e->getMessage(), "\n";
如果您想显示数字错误代码,只需这样做:
echo 'Error ', $e->getCode(), "\n";
需要注意的是 mysqli_report() 似乎并没有阻止 all 警告。这感觉像是一个实施监督,但我没有更多关于它的信息。为此,您已经在使用的错误抑制运算符 @
就足够了。
此外,不要忘记在生产服务器中禁用 display_errors
指令。
最后,自 PHP/8.1 以来,Mysqli 默认仅在错误时抛出异常。在早期版本中,您需要明确设置它:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);