Start · Sprachen · PHP · Referenz · PDO_INFORMIX DSN

PDO_INFORMIX DSN

Funktion

Definiert den Data Source Name (DSN) für PDO-Verbindungen zu Informix-Datenbanken über den <code>informix:</code>-Präfix.

seit PHP 5.1.0 Kategorie: db

Signatur

PDO_INFORMIX DSN

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

Typ

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 zu Informix erfolgreich hergestellt. Anzahl Systemtabellen: 42

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";
}
IBM Data Server Verbindung hergestellt. customer orders products ...

// 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.