Start · Sprachen · PHP · Referenz · PDO_IBM DSN

PDO_IBM DSN

Funktion

Definiert den <code>DSN</code>-String für den PDO_IBM-Treiber, um Verbindungen zu IBM DB2-, IBM Cloudant- und IBM Informix-Datenbanken herzustellen.

seit PHP 5.1.0 Kategorie: db

Signatur

PDO_IBM DSN

Beschreibung

Der PDO_IBM DSN (Data Source Name) ist ein spezieller Verbindungsstring, der beim Erstellen einer PDO-Instanz mit dem IBM-Datenbanktreiber verwendet wird. Er legt fest, zu welchem IBM-Datenbankserver, welchem Port und welcher Datenbank eine Verbindung aufgebaut werden soll.

Es gibt zwei Varianten des DSN-Formats: Ein DSN-Alias, der auf einen vorkonfigurierten Eintrag in der DB2-Clientkonfigurationsdatei (db2cli.ini oder Katalog) verweist, sowie ein vollständiger DSN, der Hostname, Port, Protokoll und Datenbankname direkt enthält. Die vollständige Form ist portabler und erfordert keine lokale Clientkonfiguration.

Das DSN-Präfix lautet ibm:. Danach folgen entweder nur der Katalog-Alias oder ein DRIVER-Verbindungsstring mit Schlüssel-Wert-Paaren wie HOSTNAME, PORT, DATABASE und PROTOCOL.

Sicherheitshinweis: Zugangsdaten (Benutzername und Passwort) sollten niemals in den DSN-String eingebettet werden, sondern als separate Parameter an den PDO-Konstruktor übergeben werden, um eine unbeabsichtigte Offenlegung in Logs oder Fehlerausgaben zu vermeiden.

Parameter

Name Typ Default Beschreibung
$DSN-Präfix Pflicht string Muss immer ibm: lauten. Leitet den IBM-spezifischen Teil des DSN ein.
$DRIVER string Name des zu verwendenden IBM-Treibers, z. B. {IBM DB2 ODBC DRIVER}. Nur bei vollständigem DSN-Format erforderlich.
$HOSTNAME string Hostname oder IP-Adresse des Datenbankservers, z. B. db.example.com.
$PORT int 50000 TCP-Port des Datenbankservers. Standard für IBM DB2 ist 50000.
$DATABASE string Name der Zieldatenbank auf dem IBM-Datenbankserver.
$PROTOCOL string TCPIP Netzwerkprotokoll für die Verbindung. Typischerweise TCPIP.

Rückgabewert

Typ

Beispiele

Verbindung über DSN-Alias (Katalog-Eintrag)

<?php
// Voraussetzung: 'MYDB' ist als Alias im DB2-Client-Katalog registriert
try {
    $dsn = 'ibm:MYDB';
    $pdo = new PDO($dsn, 'db2user', 'geheimesPasswort');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Verbindung via DSN-Alias erfolgreich!';
} catch (PDOException $e) {
    echo 'Verbindungsfehler: ' . $e->getMessage();
}
Verbindung via DSN-Alias erfolgreich!

Verbindung über vollständigen DSN-String

<?php
// Vollständiger DSN ohne lokale Katalogkonfiguration
try {
    $dsn = 'ibm:DRIVER={IBM DB2 ODBC DRIVER};'
         . 'DATABASE=SAMPLE;'
         . 'HOSTNAME=db.example.com;'
         . 'PORT=50000;'
         . 'PROTOCOL=TCPIP;';

    $pdo = new PDO($dsn, 'db2user', 'geheimesPasswort');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->query('SELECT TABNAME FROM SYSCAT.TABLES FETCH FIRST 3 ROWS ONLY');
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['TABNAME'] . PHP_EOL;
    }
} catch (PDOException $e) {
    echo 'Verbindungsfehler: ' . $e->getMessage();
}
SYSTABLES SYSCOLUMNS SYSINDEXES

// Wichtig · Fallstricke

Sicherheit: Benutzername und Passwort niemals direkt in den DSN-String einbetten. Stattdessen als zweiten und dritten Parameter des PDO-Konstruktors übergeben, da DSN-Strings in PHP-Fehlermeldungen, Logs und Stack-Traces ausgegeben werden können.

Treiber-Voraussetzung: Der PDO_IBM-Treiber ist nicht in der Standard-PHP-Distribution enthalten. Er muss separat installiert werden (z. B. via PECL: pecl install pdo_ibm). Außerdem muss das IBM Data Server Client SDK oder IBM DB2 Connect auf dem Server installiert sein.

Kompatibilität: PDO_IBM unterstützt IBM DB2 LUW, IBM DB2 for z/OS sowie IBM Informix. Bei Informix lautet das Präfix ebenfalls ibm:, der Verbindungsstring kann jedoch abweichen. Die genaue Syntax kann je nach Treiber-Version variieren.