PHP/PDO:如何获取当前连接状态

16

什么是 PDO 的等效语句:

mysqli_stat($dbConn);

顺便说一下,我用它来(发送信息)确保我已连接


@witherwind 这不是重复。我正在寻找一个连接状态方法。另一个问题是想要测试连接。 - Omar
4个回答

23

我不能得到这个答案的学分。有人发布了答案,但他/她后来删除了条目。

这是您问题的(已保存的存档)答案:

$status = $conn->getAttribute(PDO::ATTR_CONNECTION_STATUS);

4
那么你会因为将其从被遗忘中拯救出来而获得赞誉(并帮助我)。 :) - Russ

6

即使我停止了mysqld,$pdo->getAttribute(PDO::ATTR_CONNECTION_STATUS)始终返回"127.0.0.1 via TCP/IP",解决方法如下:

if ($pdo->getAttribute(PDO::ATTR_SERVER_INFO)=='MySQL server has gone away')
{
    $pdo=new PDO('mysql:host=127.0.0.1;port=3306;dbname=mydb;charset=UTF8', 'root', '', array(PDO::ATTR_PERSISTENT=>true));
}

在我的环境中(PHP 8.1),对于一个“断开”的连接,调用getAttribute会抛出异常。所以像这样:尝试{ $x = $db->getAttribute(PDO::ATTR_SERVER_INFO); echo "OK"; } 捕获(Exception $e) { echo "需要新的连接"; } - undefined

5

3
$status = $conn->getAttribute(PDO::ATTR_CONNECTION_STATUS);这行代码的作用是获取 $conn 数据库连接对象的连接状态属性,并将其赋值给 $status 变量。 - Omar

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接