【问题标题】:Get current PDO driver from existing connection?从现有连接获取当前 PDO 驱动程序?
【发布时间】:2012-04-22 20:37:04
【问题描述】:

我有一个在构造函数中接受现有PDO 连接的类:

class Foo {
    public function __construct(\PDO $conn = NULL) {
        // ...
    }

    // ...
}

我的问题是:有没有办法确定现有的PDO 连接当前正在使用什么驱动程序(最好来自列表found here)?我在 API 文档中没有看到任何内容。

出于好奇,我想知道正在使用哪个驱动程序,因为我的类中的功能是特定于数据库的,所以我想要一种方法来验证传递给它的连接是否是正确的类型。

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    您可以将PDO::getAttribute()PDO::ATTR_DRIVER_NAME 一起使用:

    $name = $conn->getAttribute(PDO::ATTR_DRIVER_NAME);
    

    【讨论】:

    • 谢谢。我相信这会奏效。不过,它返回的值似乎不是可用驱动程序页面上列出的值(例如,我看到为 Oracle 10g 返回的字符串 oci,而不是上面列出的预期 PDO_OCI页)。
    • @drrcknlsn,那是因为该页面上列出的名称不是真实姓名。使用php.net/manual/en/pdo.getavailabledrivers.php获取真实姓名。
    【解决方案2】:

    使用getAttribute():

    http://www.php.net/manual/en/pdo.getattribute.php

    $pdo_object->getAttribute(PDO::ATTR_DRIVER_NAME);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-24
      • 2014-04-14
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      相关资源
      最近更新 更多