Signatur
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
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);
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);
// 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.