Signatur
Beschreibung
Der PDO_INFORMIX DSN beschreibt das Format des Data Source Name, der beim Aufbau einer PDO-Verbindung zu einer IBM Informix-Datenbank verwendet wird. Das IBM-PDO-Informix-Treiber-Paket (PDO_INFORMIX) unterstützt dabei zwei grundlegende Verbindungsansätze: die klassische Verbindung über den Informix-ODBC-Treiber sowie die IBM Data Server-Verbindung.
Der DSN beginnt immer mit dem Präfix informix:, gefolgt von semikolon-getrennten Schlüssel-Wert-Paaren. Zu den wichtigsten Parametern gehören host, service (Port), database, server, protocol, EnableScrollableCursors und userid/password (alternativ direkt im DSN oder als separate PDO-Parameter). Für IBM Data Server-Verbindungen ist alternativ auch ein einfacher ODBC-DSN-Name erlaubt.
Der DSN wird dem PDO-Konstruktor als erstes Argument übergeben. Benutzername und Passwort sollten vorzugsweise als separate Parameter an den Konstruktor übergeben werden, um die Zugangsdaten vom DSN zu trennen. Der Treiber setzt eine korrekt konfigurierte IBM Informix Client SDK-Installation voraus.
Typische Einsatzgebiete sind Legacy-Enterprise-Applikationen und Warenwirtschaftssysteme, die auf IBM Informix-Datenbanken aufsetzen und eine standardisierte PHP-Datenbankschnittstelle über PDO benötigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $host | string | Hostname oder IP-Adresse des Informix-Datenbankservers. | |
| $service | string | Dienst- oder Portangabe für den Informix-Server, z.B. 9800 oder ein Servicename aus der services-Datei. |
|
| $database | string | Name der Zieldatenbank auf dem Informix-Server. | |
| $server | string | Name des Informix-Serverinstanz (entspricht dem Eintrag in sqlhosts bzw. INFORMIXSERVER). |
|
| $protocol | string | onsoctcp | Netzwerkprotokoll für die Verbindung, z.B. onsoctcp (TCP/IP) oder olsoctcp. |
| $EnableScrollableCursors | int | 0 | Aktiviert scrollbare Cursor: 0 = deaktiviert, 1 = aktiviert. Scrollbare Cursor ermöglichen die Navigation in Ergebnismengen vorwärts und rückwärts. |
| $userid | string | Benutzername für die Datenbankverbindung. Besser als zweites Argument im PDO-Konstruktor übergeben. | |
| $password | string | Passwort für die Datenbankverbindung. Besser als drittes Argument im PDO-Konstruktor übergeben. |
Rückgabewert
Beispiele
Verbindung zu Informix über Host, Port und Datenbank
<?php
// DSN für eine direkte TCP/IP-Verbindung zum Informix-Server
$dsn = 'informix:host=mein-informix-server; service=9800; database=mydb; server=myserver; protocol=onsoctcp; EnableScrollableCursors=1';
$username = 'db_user';
$password = 'geheimesPasswort';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Verbindung zu Informix erfolgreich hergestellt.\n";
$stmt = $pdo->query('SELECT COUNT(*) FROM systables');
$count = $stmt->fetchColumn();
echo "Anzahl Systemtabellen: " . $count . "\n";
} catch (PDOException $e) {
echo "Verbindungsfehler: " . $e->getMessage() . "\n";
}
Verbindung über einen ODBC-DSN-Namen (IBM Data Server)
<?php
// Wenn ein ODBC-DSN-Eintrag 'InformixDSN' in der ODBC-Konfiguration vorhanden ist:
$dsn = 'informix:DSN=InformixDSN';
$username = 'db_user';
$password = 'geheimesPasswort';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "IBM Data Server Verbindung hergestellt.\n";
// Beispielabfrage
$stmt = $pdo->prepare('SELECT tabname FROM systables WHERE tabtype = ?');
$stmt->execute(['T']);
foreach ($stmt->fetchAll(PDO::FETCH_COLUMN) as $table) {
echo $table . "\n";
}
} catch (PDOException $e) {
echo "Fehler: " . $e->getMessage() . "\n";
}
// Wichtig · Fallstricke
Installation: Der PDO_INFORMIX-Treiber ist nicht im Standard-PHP-Paket enthalten. Er muss separat als PECL-Paket installiert werden und setzt ein lokal installiertes IBM Informix Client SDK (CSDK) voraus. Die Umgebungsvariable INFORMIXDIR muss korrekt gesetzt sein.
Sicherheit: Benutzernamen und Passwörter niemals direkt im DSN-String hart kodieren, wenn dieser in Logs oder Fehlermeldungen erscheinen könnte. Stattdessen immer als separate Parameter an den PDO-Konstruktor übergeben und Zugangsdaten aus Umgebungsvariablen oder sicheren Konfigurationsdateien lesen.
Windows vs. Unix: Unter Windows unterscheidet sich die Konfiguration der sqlhosts-Datei und der Servicenamen von Unix/Linux. Auf Windows-Systemen wird häufig ein ODBC-DSN-basierter Ansatz bevorzugt.
Scrollbare Cursor: Das Aktivieren von EnableScrollableCursors kann die Performance beeinträchtigen, da der Server zusätzliche Ressourcen für die bidirektionale Navigation bereitstellen muss. Nur aktivieren, wenn tatsächlich benötigt.