Signatur
Beschreibung
db2_set_option() ermöglicht es, nach dem Erstellen einer Datenbankverbindung oder eines Prepared Statements Optionen nachträglich zu setzen. Die Funktion ist besonders nützlich, wenn Verbindungsoptionen nicht bereits beim Aufruf von db2_connect() oder db2_pconnect() übergeben wurden, oder wenn Statement-Optionen erst unmittelbar vor der Ausführung eines Statements konfiguriert werden sollen.
Der Parameter $type legt fest, ob es sich bei $resource um eine Verbindungsressource (1) oder eine Statement-Ressource (2) handelt. Zulässige Schlüssel im $options-Array richten sich nach dem jeweiligen Typ und umfassen z. B. cursor, rowcount, scrollable oder autocommit.
Typische Anwendungsfälle sind das Aktivieren von scrollbaren Cursors für Statement-Ressourcen, das Steuern des Autocommit-Verhaltens für Verbindungen oder das Setzen von db2_client_info- bzw. db2_server_info-relevanten Optionen. Die Funktion gibt true zurück, wenn alle Optionen erfolgreich gesetzt wurden, andernfalls false.
Hinweis: db2_set_option() ist Teil der IBM DB2- und Apache Derby-Erweiterung für PHP und steht nur zur Verfügung, wenn die ibm_db2-Extension installiert und aktiviert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $resource Pflicht | resource | Eine gültige Verbindungsressource (von db2_connect() oder db2_pconnect()) oder eine Statement-Ressource (von db2_prepare()), auf die die Optionen angewendet werden sollen. |
|
| $options Pflicht | array | Ein assoziatives Array mit den zu setzenden Optionen. Gültige Schlüssel für Verbindungsressourcen sind z. B. autocommit, DB2_AUTOCOMMIT_ON, DB2_AUTOCOMMIT_OFF. Für Statement-Ressourcen sind z. B. cursor, rowcount oder scrollable gültig. |
|
| $type Pflicht | int | Gibt den Typ der Ressource an: 1 für eine Verbindungsressource, 2 für eine Statement-Ressource. Ein falscher Wert führt dazu, dass die Funktion false zurückgibt. |
Rückgabewert
true zurück, wenn alle angegebenen Optionen erfolgreich gesetzt wurden. Gibt false zurück, wenn eine oder mehrere Optionen ungültig sind, der Ressourcentyp nicht übereinstimmt oder ein anderer Fehler aufgetreten ist.Beispiele
Autocommit für eine bestehende Verbindung deaktivieren
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
// Autocommit deaktivieren, um Transaktionen manuell zu steuern
$result = db2_set_option($conn, ['autocommit' => DB2_AUTOCOMMIT_OFF], 1);
if ($result) {
echo "Autocommit erfolgreich deaktiviert.\n";
} else {
echo "Fehler beim Setzen der Option.\n";
}
// Transaktion ausführen
db2_exec($conn, "UPDATE konto SET betrag = betrag - 100 WHERE id = 1");
db2_exec($conn, "UPDATE konto SET betrag = betrag + 100 WHERE id = 2");
// Commit oder Rollback
db2_commit($conn);
db2_close($conn);
}
Scrollbaren Cursor für ein Prepared Statement setzen
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'secret');
if ($conn) {
$sql = 'SELECT id, name FROM mitarbeiter ORDER BY id';
$stmt = db2_prepare($conn, $sql);
if ($stmt) {
// Scrollbaren Cursor aktivieren (Statement-Ressource, Typ = 2)
$result = db2_set_option($stmt, ['cursor' => DB2_SCROLLABLE], 2);
if ($result) {
echo "Scrollbarer Cursor aktiviert.\n";
db2_execute($stmt);
// Direkt auf Zeile 3 springen
$row = db2_fetch_array($stmt, 3);
if ($row) {
echo "Zeile 3: ID={$row[0]}, Name={$row[1]}\n";
}
} else {
echo "Fehler beim Setzen der Cursor-Option.\n";
}
}
db2_close($conn);
}
// Wichtig · Fallstricke
Ressourcentyp: Der Parameter $type muss exakt zum übergebenen $resource-Typ passen. Wird z. B. eine Verbindungsressource mit $type = 2 (Statement) übergeben, schlägt die Funktion fehl und gibt false zurück.
Verfügbarkeit: Die Funktion ist nur verfügbar, wenn die ibm_db2-PHP-Extension installiert ist. Sie ist nicht Teil von PDO oder anderen generischen Datenbankabstraktionen.
Optionen-Schlüssel: Ungültige oder für den jeweiligen Typ nicht unterstützte Optionsschlüssel werden stillschweigend ignoriert oder führen zu einem Fehler — es empfiehlt sich daher, den Rückgabewert stets zu prüfen.