我正在尝试显示服务器状态,基于数据库是否可以连接。使用旧的
以下是我的代码:
所有的连接变量都已经提供并且正确,除了故意破坏的
你有什么想法吗? 解决方案 我使用了jeroen提供的变体。
感谢你的帮助,希望这对其他人有所帮助!^^
mysql_connect()
和 mysqli_connect()
很容易实现。我想保持现代性,所以使用 PDO,但我不知道如何抑制默认警告。据我所知,您需要使用 getMessage()
函数才能打印出 PDO 警告,但我没有使用它。以下是我的代码:
8 $dbstatus = 1;
9 try {
10 $db = new PDO($dbms . ':host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname, $dbuser, $dbpasswd);
11 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
12 } catch(PDOException $e) {
13 $dbstatus = 0;
14 }
15 if($dbstatus == 1) {
16 echo '<span style="color: green">DB Up</span>';
17 } else {
18 echo '<span style="color: red">DB Down</span>';
19 exit;
20 }
所有的连接变量都已经提供并且正确,除了故意破坏的
$dbhost
。现在它产生了期望的结果,但同时也打印了一个警告消息:
如果我更正警告:PDO::__construct():php_network_getaddresses:getaddrinfo失败:没有这样的主机。在C:\xampp\htdocs\cd\includes\dbconnect.php 的第10行。
$dbhost
变量,它可以正常工作,所以我知道问题不在于可用的PDO语句。你有什么想法吗? 解决方案 我使用了jeroen提供的变体。
if(filter_var(gethostbyname($dbhost), FILTER_VALIDATE_IP)) {
$dbstatus = 1;
try {
$db = new PDO($dbms . ':host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname, $dbuser, $dbpasswd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch(PDOException $e) {
$dbstatus = 0;
}
} else {
$dbstatus = 0;
}
if($dbstatus == 1) {
echo '<span style="color: green">DB Up</span>';
} else {
echo '<span style="color: red">DB Down</span>';
exit;
}
感谢你的帮助,希望这对其他人有所帮助!^^