0

以下基本代码按预期工作。

<?php
mysql_connect("localhost", "user", "user@123") or die(mysql_error());
echo "Connected to MySQL<br />";
?>

我所需要的是应该返回 page not found 404 错误而不是 mysql_error。我正在寻找尽可能短的代码,因为这将用作负载均衡器检查。

以下似乎不起作用。我得到一个空白页。

mysql_connect("localhost", "user", "user@123") or die(header("HTTP/1.0 404 Not Found"));
4

4 回答 4

1

mysql_connect如果连接不成功,将返回 false 值。

$connected = mysql_connect("localhost", "user", "user@123");
if (!$connected){
  header("HTTP/1.0 404 Not Found");
}

不确定您使用此代码的确切用途 - 但无法连接到您的数据库并不一定意味着找不到请求的页面 - 这也可能是您的 sql 服务器的问题。


附带说明 - 避免使用过时的 mysql_* 函数。强烈建议不要将它们用于新代码 。更现代的替代品可用且维护得更好。考虑改为学习 准备好的语句 并使用 PDO 或 MySQLi。当严格使用时,它们避免了繁琐和手动逃逸的部分,因此变得更容易堆放,并且作为副产品使用更安全。请参阅PDO 教程以了解开始。

于 2012-07-18T12:10:28.110 回答
1

使用 mysqli 或 PDO , mysql_* 会贬值

$link =mysql_connect("localhost", "user", "user@123");
if (!$link) {
    header("error.php");
}
echo 'Connected successfully';
于 2012-07-18T12:12:56.827 回答
1

我将执行以下操作:请记住,我使用的是 mysqli,强烈建议不要使用 mysql_*。

$mysqli = new mysqli('localhost', 'user', 'password', 'dbname');

if ($mysqli->connect_error) {
    header("HTTP/1.0 404 Not Found");
} else {

}

您确定要返回 404,但由于已找到资源,这具有误导性,我将返回 500 错误作为更合适的服务器错误。

有关 HTTP 状态代码的列表,请参见此处

于 2012-07-18T12:13:22.123 回答
1

我会简单地做一个 if 检查并返回一个 500 错误,因为如果谷歌在您无法连接时尝试查看索引页面并将其返回 404,它会认为您的网站已损坏并且您将失去排名和指向该页面的链接页。

500 至少会表明存在服务器问题,但它会被修复:

if(!mysql_connect('localhost', 'user', 'pass')){
    header('HTTP/1.1 500 Server error');
    exit();
}
于 2012-07-18T12:13:43.707 回答