Start · Sprachen · PHP · Referenz · db2_connect

db2_connect

Funktion

Stellt eine persistente oder nicht-persistente Verbindung zu einer IBM DB2-, Cloudscape- oder Apache Derby-Datenbank her.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_connect(string $database, string $username, string $password, array $options = []): resource|false

Beschreibung

db2_connect() öffnet eine neue Datenbankverbindung zu einer IBM DB2-, Cloudscape- oder Apache Derby-Datenbank. Im Gegensatz zu db2_pconnect() wird bei jedem Aufruf eine neue, nicht-persistente Verbindung erzeugt, die am Ende des Skripts automatisch geschlossen wird.

Der Parameter $database kann ein im ODBC-Katalog eingetragener DSN-Name sein, oder – auf UNIX/Linux-Systemen – ein vollständiger DB2-Katalog-Eintrag. Alternativ lässt sich auch ein vollständiger Connection String (DSN-Zeichenkette) direkt übergeben, z. B. DRIVER={IBM DB2 ODBC DRIVER};DATABASE=mydb;HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;UID=user;PWD=pass;.

Über den optionalen $options-Array können Verbindungsattribute wie DB2_AUTOCOMMIT_ON/DB2_AUTOCOMMIT_OFF, Cursor-Typen oder Isolationsstufen gesetzt werden. Dies ist besonders nützlich, wenn Transaktionssteuerung oder spezielle Treiber-Optionen benötigt werden.

Die Funktion gibt bei Erfolg eine Verbindungsressource zurück, die an alle weiteren db2_*-Funktionen übergeben werden kann. Im Fehlerfall wird false zurückgeliefert; Fehlerdetails sind dann über db2_conn_error() und db2_conn_errormsg() abrufbar.

Parameter

Name Typ Default Beschreibung
$database Pflicht string DSN-Name aus dem ODBC-Katalog, vollständiger DB2-Katalog-Alias oder kompletter DSN-Connection-String zur Identifikation der Zieldatenbank.
$username Pflicht string Benutzername für die Datenbankverbindung. Bei Verwendung eines vollständigen DSN-Connection-Strings kann ein leerer String übergeben werden.
$password Pflicht string Passwort des Datenbankbenutzers. Bei Verwendung eines vollständigen DSN-Connection-Strings kann ein leerer String übergeben werden.
$options array [] Assoziatives Array mit Verbindungsoptionen, z. B. ['autocommit' => DB2_AUTOCOMMIT_OFF] oder Cursor-Einstellungen. Schlüssel sind vordefinierte DB2-Konstanten.

Rückgabewert

Typ
resource|false
Beschreibung
Bei erfolgreicher Verbindung eine Verbindungsressource, die an weitere db2_*-Funktionen übergeben wird. Bei einem Fehler wird false zurückgegeben; Details sind über db2_conn_error() und db2_conn_errormsg() abrufbar.

Beispiele

Einfache Verbindung über Katalog-DSN

<?php
$database = 'SAMPLE';  // im DB2-Katalog registrierter Datenbankname
$user     = 'db2admin';
$password = 'geheimesPasswort';

$conn = db2_connect($database, $user, $password);

if ($conn) {
    echo "Verbindung erfolgreich hergestellt.\n";
    // Datenbankabfragen durchführen ...
    db2_close($conn);
} else {
    echo "Verbindungsfehler: " . db2_conn_errormsg();
}
Verbindung erfolgreich hergestellt.

Verbindung per DSN-String mit deaktiviertem Autocommit

<?php
$dsn = 'DRIVER={IBM DB2 ODBC DRIVER};'
     . 'DATABASE=SAMPLE;'
     . 'HOSTNAME=db2.example.com;'
     . 'PORT=50000;'
     . 'PROTOCOL=TCPIP;';

$options = [
    'autocommit' => DB2_AUTOCOMMIT_OFF,
];

$conn = db2_connect($dsn, 'db2admin', 'geheimesPasswort', $options);

if ($conn) {
    // Transaktion starten
    $stmt = db2_exec($conn, "UPDATE orders SET status = 'shipped' WHERE id = 42");
    if ($stmt) {
        db2_commit($conn);
        echo "Transaktion erfolgreich committet.\n";
    } else {
        db2_rollback($conn);
        echo "Fehler: " . db2_stmt_errormsg();
    }
    db2_close($conn);
} else {
    echo "Verbindungsfehler: " . db2_conn_errormsg();
}
Transaktion erfolgreich committet.

// Wichtig · Fallstricke

Sicherheitshinweis: Zugangsdaten (Benutzername und Passwort) sollten niemals hartcodiert im Quellcode stehen. Verwende stattdessen Umgebungsvariablen oder gesicherte Konfigurationsdateien außerhalb des Web-Roots.

Erweiterung: db2_connect() setzt die installierte ibm_db2-PHP-Erweiterung voraus. Diese ist standardmäßig nicht in PHP enthalten und muss separat installiert sowie in der php.ini aktiviert werden (extension=ibm_db2).

Persistente Verbindungen: Für langlebige Skripte oder Webserver-Umgebungen mit vielen Anfragen empfiehlt sich db2_pconnect(), das Verbindungen im Pool hält und wiederverwenden kann, was den Verbindungsaufwand deutlich reduziert.

Ressourcen-Management: Nicht mehr benötigte Verbindungen sollten explizit mit db2_close() geschlossen werden, auch wenn PHP sie am Skript-Ende automatisch schließt — besonders wichtig in langlebigen Prozessen.