Start · Sprachen · PHP · Referenz · odbc_setoption

odbc_setoption

Funktion

Setzt ODBC-Optionen für eine Verbindungs- oder Ergebnis-Ressource, um Treiber- und Verbindungsverhalten anzupassen.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_setoption(resource $odbc, int $which, int $option, int $value): bool

Beschreibung

odbc_setoption() ermöglicht es, verschiedene ODBC-Optionen auf Verbindungs- oder Statement-Ebene zu konfigurieren. Dies entspricht den ODBC-API-Funktionen SQLSetConnectOption() bzw. SQLSetStmtOption() und erlaubt eine detaillierte Steuerung des ODBC-Treibers.

Der Parameter which bestimmt, ob die Option für eine Verbindung (1) oder ein Statement/Ergebnis (2) gesetzt wird. Je nach ODBC-Treiber und Plattform stehen unterschiedliche Optionen und Werte zur Verfügung. Typische Anwendungsfälle sind das Setzen von Timeouts, das Aktivieren oder Deaktivieren von Autocommit sowie die Konfiguration von Cursor-Verhalten.

Diese Funktion ist vor allem dann nützlich, wenn spezifische Treiber-Einstellungen erforderlich sind, die über die Standard-ODBC-Funktionen nicht zugänglich sind. Da die verfügbaren Optionen stark treiber- und datenbankabhängig sind, sollte die jeweilige Treiberdokumentation konsultiert werden.

Hinweis: Nicht alle Optionen werden von jedem ODBC-Treiber unterstützt. Bei einem nicht unterstützten Optionswert gibt die Funktion false zurück und erzeugt ggf. eine Warnung.

Parameter

Name Typ Default Beschreibung
$odbc Pflicht resource Eine gültige ODBC-Verbindungsressource (zurückgegeben von odbc_connect()) oder eine ODBC-Ergebnisressource (zurückgegeben von odbc_exec() oder ähnlichen Funktionen).
$which Pflicht int Gibt an, auf welcher Ebene die Option gesetzt wird: 1 für Verbindungsoptionen (SQLSetConnectOption), 2 für Statement-Optionen (SQLSetStmtOption).
$option Pflicht int Die ODBC-Optionskonstante, die gesetzt werden soll (z. B. SQL_AUTOCOMMIT, SQL_QUERY_TIMEOUT). Die verfügbaren Werte hängen vom ODBC-Treiber ab.
$value Pflicht int Der ganzzahlige Wert für die gewählte Option. Mögliche Werte sind treiber- und optionsabhängig (z. B. 0 oder 1 für boolesche Optionen, Sekunden für Timeouts).

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Option erfolgreich gesetzt wurde, andernfalls false. Bei ungültiger Ressource, nicht unterstützter Option oder ungültigem Wert wird false zurückgegeben.

Beispiele

Autocommit auf einer ODBC-Verbindung deaktivieren

<?php
// Verbindung herstellen
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}

// SQL_AUTOCOMMIT = 102, Wert 0 = deaktiviert
$result = odbc_setoption($conn, 1, 102, 0);

if ($result) {
    echo "Autocommit erfolgreich deaktiviert.";
} else {
    echo "Fehler beim Setzen der Option: " . odbc_errormsg($conn);
}

odbc_close($conn);
Autocommit erfolgreich deaktiviert.

Query-Timeout für ein Statement setzen

<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

$stmt = odbc_prepare($conn, 'SELECT * FROM grosse_tabelle');

if (!$stmt) {
    die('Statement-Vorbereitung fehlgeschlagen.');
}

// SQL_QUERY_TIMEOUT = 0, Wert = 30 Sekunden
// which = 2 für Statement-Optionen
$result = odbc_setoption($stmt, 2, 0, 30);

if ($result) {
    echo "Query-Timeout auf 30 Sekunden gesetzt.";
    odbc_execute($stmt);
} else {
    echo "Timeout-Option nicht unterstützt oder Fehler aufgetreten.";
}

odbc_close($conn);
Query-Timeout auf 30 Sekunden gesetzt.

// Wichtig · Fallstricke

Treiber-Abhängigkeit: Die verfügbaren Optionen und deren Werte sind stark vom verwendeten ODBC-Treiber abhängig. Konsultiere immer die Dokumentation des jeweiligen Treibers, bevor du bestimmte Optionswerte verwendest.

Optionskonstanten: Die numerischen Werte für option entsprechen den ODBC-Definitionen aus der jeweiligen Treiber-Spezifikation. Es empfiehlt sich, diese Konstanten nicht hardzukodieren, sondern — wenn vom Treiber bereitgestellt — als benannte Konstanten zu verwenden.

Fehlerbehandlung: Da nicht alle Treiber jede Option unterstützen, sollte der Rückgabewert stets geprüft werden. Fehlerdetails können über odbc_errormsg() abgefragt werden.