如何在 MySQL 数据库连接失败时重定向 PHP 页面
How to redirect PHP page on MySQL database connection failure
使用 MySQLi 连接方法我试图重定向页面而不是打印出错误消息
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'demo');
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Check connection
if($mysqli === false){
die("ERROR: Could not connect. " . $mysqli->connect_error);
header('Location: http://www.example.com/');
}
?>
尝试对此进行测试我将 localhost 更改为 localhostszzz 但我收到
的错误消息
Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo
failed: Name or service not known in
/../../page.php on line 8
我该如何解决这个问题,而不是重定向到 http://www.example.com/
?
您只需要编辑 if 条件。如需更多帮助,您可以访问w3schools
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'demo');
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if ($mysqli -> connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
header('Location: http://www.example.com/');
}
?>
你不能那样做。事实上,你不应该那样做。
您需要的是自定义错误处理程序。错误处理程序是接受所有未处理的异常、错误和警告并处理它们的东西。内置错误处理程序可以在浏览器中显示错误或记录到文件中。您必须创建自己的错误处理程序,它能够处理警告以及所有其他类型的错误。
我不会向您展示如何构建自定义错误处理程序,因为这是一个非常广泛的主题。不过,我会提出更好的建议。您的用户永远不会看到 PHP 内部错误消息。您的用户应该会看到一个友好的 500 页面,说明软件中存在问题,并且该问题已记录在文件中以供开发人员查看。您还应该让用户可以选择在紧急情况下与您联系。
当涉及到mysqli 错误处理时,您应该始终启用错误报告并且永远不要手动检查错误。使用以下两行打开连接:
// enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// create the object
$mysqli = new mysqli('localhost', 'inet', '5432', 'test');
不要手动检查错误。不过,你的警告不是来自mysqli,而是来自网络API in PHP。上面的设置不会对该警告产生影响。所以修复错误,启用错误日志记录,并为用户实现漂亮的 500 错误页面。不要为此类警告添加任何特殊处理。
如果您仍然对快速修复此特定警告感兴趣,可以尝试以下操作。 我强烈不建议使用它,它仅用于演示目的。
使用错误抑制运算符 @
静音警告。启用 mysqli 错误报告,这也会触发相同的异常。捕获异常。
try {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
@$mysqli = new mysqli('localhost1', 'inet', '5432', 'test');
} catch (mysqli_sql_exception $exception) {
exit(header('Location: error500.html'));
}
好的,
这就是我一直在寻找并且正在为我工作的东西 mow
try{
$conn = new mysqli($servername, $username, $password, $dbname);
}
catch(Exception $e){
header('Location: 500.php');
die();
}
使用 MySQLi 连接方法我试图重定向页面而不是打印出错误消息
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'demo');
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Check connection
if($mysqli === false){
die("ERROR: Could not connect. " . $mysqli->connect_error);
header('Location: http://www.example.com/');
}
?>
尝试对此进行测试我将 localhost 更改为 localhostszzz 但我收到
的错误消息Warning: mysqli::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /../../page.php on line 8
我该如何解决这个问题,而不是重定向到 http://www.example.com/
?
您只需要编辑 if 条件。如需更多帮助,您可以访问w3schools
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'demo');
$mysqli = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if ($mysqli -> connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
header('Location: http://www.example.com/');
}
?>
你不能那样做。事实上,你不应该那样做。
您需要的是自定义错误处理程序。错误处理程序是接受所有未处理的异常、错误和警告并处理它们的东西。内置错误处理程序可以在浏览器中显示错误或记录到文件中。您必须创建自己的错误处理程序,它能够处理警告以及所有其他类型的错误。
我不会向您展示如何构建自定义错误处理程序,因为这是一个非常广泛的主题。不过,我会提出更好的建议。您的用户永远不会看到 PHP 内部错误消息。您的用户应该会看到一个友好的 500 页面,说明软件中存在问题,并且该问题已记录在文件中以供开发人员查看。您还应该让用户可以选择在紧急情况下与您联系。
当涉及到mysqli 错误处理时,您应该始终启用错误报告并且永远不要手动检查错误。使用以下两行打开连接:
// enable error reporting
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// create the object
$mysqli = new mysqli('localhost', 'inet', '5432', 'test');
不要手动检查错误。不过,你的警告不是来自mysqli,而是来自网络API in PHP。上面的设置不会对该警告产生影响。所以修复错误,启用错误日志记录,并为用户实现漂亮的 500 错误页面。不要为此类警告添加任何特殊处理。
如果您仍然对快速修复此特定警告感兴趣,可以尝试以下操作。 我强烈不建议使用它,它仅用于演示目的。
使用错误抑制运算符 @
静音警告。启用 mysqli 错误报告,这也会触发相同的异常。捕获异常。
try {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
@$mysqli = new mysqli('localhost1', 'inet', '5432', 'test');
} catch (mysqli_sql_exception $exception) {
exit(header('Location: error500.html'));
}
好的, 这就是我一直在寻找并且正在为我工作的东西 mow
try{
$conn = new mysqli($servername, $username, $password, $dbname);
}
catch(Exception $e){
header('Location: 500.php');
die();
}