PHP Conference Nagoya 2025

odbc_setoption

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_setoptionODBC-Einstellungen anpassen

Beschreibung

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

Diese Funktion erlaubt das Einstellen der ODBC-Optionen für eine einzelne Verbindung oder ein Abfrageergebnis. Sie soll beim Auffinden und Beheben von Problemen mit ODBC-Treibern helfen. Es empfiehlt sich, diese Funktion nur zu nutzen, wenn man einige Erfahrung mit ODBC-Programmierung gesammelt hat und die Wirkungen der einzelnen Parameter kennt. Es wird sicherlich nötig sein, eine gute ODBC-Referenz zur Hand zu haben, um all die unterschiedlichen Optionen und Werte, die verwendet werden können, zu erklären. Unterschiedliche Treiberversionen unterstützen unterschiedliche Optionen.

Weil die Effekte je nach ODBC-Treiber unterschiedlich sein können, wird unbedingt davon abgeraten, Skripte mit dieser Funktion zu veröffentlichen. Einige ODBC-Optionen stehen dieser Funktion nicht zur Verfügung, weil sie vor dem Aufbau einer ODBC-Verbindung oder vor der Vorbereitung der Abfrage eingestellt sein müssen. In einigen Fällen hilft diese Funktion allerdings zu vermeiden, dass man von seinem Vorgesetzten gezwungen wird, ein kommerzielles Programm einzusetzen - und darauf kommt es doch an.

Parameter-Liste

odbc

Ist die Verbindungs- oder Ergebniskennung, deren Einstellungen geändert werden sollen. Bei SQLSetConnectOption() ist es eine Verbindungskennung, bei SQLSetStmtOption() eine Ergebniskennung.

which

Ist die ODBC-Funktion, die genutzt werden soll. Die Werte sind 1 für SQLSetConnectOption() und 2 für SQLSetStmtOption().

option

Die zu ändernde Option.

value

Der Wert für die angegebene option.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Beispiel #1 odbc_setoption()-Beispiele

<?php
// 1. Option 102 von SQLSetConnectOption() ist SQL_AUTOCOMMIT.
// Wert 1 für SQL_AUTOCOMMIT entspricht SQL_AUTOCOMMIT_ON.
// Dieses Beispiel hat denselben Effekt wie
// odbc_autocommit($conn, true);

odbc_setoption($conn, 1, 102, 1);

// 2. Option 0 von SQLSetStmtOption() ist SQL_QUERY_TIMEOUT.
// Dieses Beispiel setzt den Timeout auf 30 Sekunden.

$result = odbc_prepare($conn, $sql);
odbc_setoption($result, 2, 0, 30);
odbc_execute($result);
?>

add a note

User Contributed Notes 1 note

up
-1
egil at wp dot pl
15 years ago
Some options for Microsoft SQL Server ODBC:
1 - (SQL_MAX_ROWS) show top x rows
6 - (SQL_CURSOR_TYPE) zmiana kursora - ma działać dopiero w PHP 5.3

You can "translate" constant names (found on e.g. Microsoft website) to appropriate values using this page:
http://www.freepascal.org/docs-html/packages/odbcsql/index-2.html

BTW. If anyone is banging his head about "cursor type changed" warning while using execute with ORDER BY clause, then just use exec for now (remember to addslashes for yourself). In PHP 5.3 a Bug #43668 will be fixed and it will allow you to change a cursor type to SQL_CUR_USE_ODBC.

Note that you could also try to select a cursor type in odbc_connect, but that didn't work for me (much more problems appeared then it solved).
To Top