加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – PDO :: getAttribute(PDO :: ATTR_CONNECTION_STATUS)的

发布时间:2020-12-13 17:54:18 所属栏目:PHP教程 来源:网络整理
导读:我几乎整天都在寻找这个……而且似乎无法找到任何地方返回的值.有人能告诉我: PDO :: getAttribute是什么值(PDO :: ATTR_CONNECTION_STATUS);返回? 是否有可能依靠其结果来确定连接是否仍然存在?(最终,我可以用什么来检查连接是否仍然存在?) 最后!事实
我几乎整天都在寻找这个……而且似乎无法找到任何地方返回的值.有人能告诉我:

> PDO :: getAttribute是什么值(PDO :: ATTR_CONNECTION_STATUS);返回?
>是否有可能依靠其结果来确定连接是否仍然存在?(最终,我可以用什么来检查连接是否仍然存在?)

最后!事实证明,mysqli :: ping()函数可以在PDO中实现,如下所示:
class PDOExtended extends PDO {
    public function __construct($dsn,$user,$pass,$options = array())
    {
        $this->link = parent::__construct($dsn,$options);
        $this->link->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)
    }

    // some methods

    public function isConnected()
    {
        try {
            return (bool) $this->link->query('SELECT 1+1');
        } catch (PDOException $e) {
            return false;
        }
    }

    //some other methods
}

原因:
PDO ::查询();返回包含结果的数组或false,在当前情况下它不会返回任何内容,因为连接已经死亡,PDO应该向我们抛出异常.这就是我们所期待的. catch块将返回false,并且不会停止执行我们的脚本.使用的查询

SELECT 1+1;

将始终返回2,并且由于它是在DB端计算的事实而依赖它是好的.没有联系,没有结果!它不是一种矫枉过正,因为它是非常简单的查询,并且大多数数据库(在普通共享主机上)都在localhost上,它不会超过0.0000s,这不是一个性能问题.还没有用交易进行测试,但是应该仍然可以做到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读