【发布时间】:2011-04-30 20:42:06
【问题描述】:
大家好!
我正在用 PHP 构建一个使用 MySql DB 的 webapp。例如,我想要做的是当有人试图访问一个页面,但数据库抛出一个错误,以显示一个带有 HTTP 代码 500 的 HTML(或重定向)页面。类似于 Twitter 中的“失败鲸鱼”。
这可能吗?
【问题讨论】:
标签: php mysql database error-handling
大家好!
我正在用 PHP 构建一个使用 MySql DB 的 webapp。例如,我想要做的是当有人试图访问一个页面,但数据库抛出一个错误,以显示一个带有 HTTP 代码 500 的 HTML(或重定向)页面。类似于 Twitter 中的“失败鲸鱼”。
这可能吗?
【问题讨论】:
标签: php mysql database error-handling
您可以使用 PHP 中的 die 函数来执行此操作。
mysql_connect("details go here")or die(require("failed.php"));
这将尝试连接到您的数据库,如果它失败将需要另一个文件,您还可以创建一个重定向用户的函数并将其粘贴在 die() 函数中,然后简单地将它们重定向到另一个页面,无论哪种方式都是这样您会在连接出错时将用户赶走。
【讨论】:
header("Location /path/to/anything"); 它输出“无法修改标头信息 - 标头已发送”
如果 mysql 中有错误,它将返回 FALSE 而不是资源。然后,您可以执行以下操作来测试和有条件地重定向:
// This also works for mysql_connect( ... ); and all other <dbtype>_<command>
// functions, including MySQLi, Oracle, and PSQL extensions.
$cond = mysql_query( $resource, $query );
if( $cond === FALSE )
{
// You can replace this with any other error handling you'd like.
header( "Location: url/of/error/page" );
die();
}
【讨论】:
$cond === FALSE使用 mysql_count_rows( $cond ) == 0 之类的东西。但是,这不是他问的问题。