2012-04-10 8 views
10

Ich habe eine Klasse, die eine bestehende PDO Verbindung im Konstruktor akzeptiert:Aktuellen PDO-Treiber von bestehender Verbindung abrufen?

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

    // ... 
} 

Meine Frage ist: Gibt es eine Möglichkeit zu bestimmen, welche Treiber eine bestehende PDO Verbindung gegenwärtig verwendet (vorzugsweise aus der Liste found here)? Ich habe in der API-Dokumentation nichts gesehen.

Für die Neugierigen möchte ich wissen, welcher Treiber verwendet wird, da die Funktionalität in meiner Klasse datenbankspezifisch ist. Daher möchte ich überprüfen, ob eine Verbindung, die an sie übergeben wird, vom richtigen Typ ist .

Antwort

17

Sie PDO::getAttribute() mit PDO::ATTR_DRIVER_NAME verwenden können:

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

Danke. Ich glaube, das wird funktionieren. Es scheint nicht, dass die von diesem zurückgegebenen Werte die sind, die auf der Seite mit den verfügbaren Treibern aufgeführt sind (zum Beispiel sehe ich, dass der String "oci" für Oracle 10g zurückgegeben wird, anstelle des erwarteten "PDO_OCI" wie dort aufgeführt Seite). – FtDRbwLXw6

+2

@drrcknlsn, Das ist, weil die Namen auf dieser Seite nicht die richtigen Namen sind. Verwenden Sie http://www.php.net/manual/en/pdo.getavailabledrivers.php, um die richtigen Namen zu erhalten. – Brad

Verwandte Themen