2012-04-10 48 views
10

我必须接受在构造现有PDO连接类:从现有连接获取当前PDO驱动程序?

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

    // ... 
} 

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

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

回答

17

您可以使用PDO::getAttribute()PDO::ATTR_DRIVER_NAME

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

谢谢。我相信这会起作用。虽然(例如,我看到字符串“oci”为Oracle 10g返回,而不是按照上面列出的预期的“PDO_OCI”),但是返回的值并未列在可用的驱动程序页面上页)。 – FtDRbwLXw6 2012-04-10 14:39:43

+2

@drrcknlsn,这是因为该页面上列出的名称不是真名。使用http://www.php.net/manual/en/pdo.getavailabledrivers.php获取真实姓名。 – Brad 2012-04-10 14:41:50