Signatur
Beschreibung
odbc_do() ist ein vollständiger Alias der Funktion odbc_exec() und bietet identische Funktionalität. Sie sendet eine SQL-Anweisung an die Datenbank, die über eine bestehende ODBC-Verbindung erreichbar ist, und gibt bei Erfolg ein Ergebnis-Ressource-Handle zurück.
Die Funktion eignet sich für einfache Abfragen, die nicht wiederholt ausgeführt werden müssen. Für wiederholte Ausführungen mit wechselnden Parametern sollte stattdessen odbc_prepare() in Kombination mit odbc_execute() verwendet werden, da dies die Performance steigert und SQL-Injection besser verhindert.
Da es sich um einen Alias handelt, ist das Verhalten, die Parameter und die Rückgabewerte identisch mit odbc_exec(). Es wird empfohlen, in neuem Code bevorzugt odbc_exec() zu verwenden, um Verwirrung zu vermeiden und die Codebasis konsistent zu halten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $odbc Pflicht | resource | Eine gültige ODBC-Verbindungsressource, die zuvor mit odbc_connect() oder odbc_pconnect() erstellt wurde. |
|
| $query Pflicht | string | Die SQL-Anweisung, die ausgeführt werden soll (z. B. SELECT, INSERT, UPDATE, DELETE). |
|
| $flags | int | 0 | Optionaler Parameter, der derzeit nicht verwendet wird und für zukünftige Erweiterungen reserviert ist. |
Rückgabewert
odbc_fetch_row() oder odbc_result() ausgelesen werden kann. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfache SELECT-Abfrage mit odbc_do
<?php
$conn = odbc_connect('MyDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$sql = "SELECT id, name FROM kunden WHERE aktiv = 1";
$result = odbc_do($conn, $sql);
if ($result === false) {
die('Abfrage fehlgeschlagen: ' . odbc_errormsg($conn));
}
while (odbc_fetch_row($result)) {
$id = odbc_result($result, 'id');
$name = odbc_result($result, 'name');
echo "ID: $id – Name: $name\n";
}
odbc_free_result($result);
odbc_close($conn);
INSERT-Anweisung ausführen
<?php
$conn = odbc_connect('MyDSN', 'benutzer', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
// ACHTUNG: Nutzereingaben immer validieren/escapen – hier nur zur Demonstration
$name = 'Neuer Kunde';
$email = 'neu@example.com';
$sql = "INSERT INTO kunden (name, email, aktiv) VALUES ('$name', '$email', 1)";
$result = odbc_do($conn, $sql);
if ($result !== false) {
echo "Datensatz erfolgreich eingefügt.";
} else {
echo "Fehler: " . odbc_errormsg($conn);
}
odbc_close($conn);
// Wichtig · Fallstricke
Sicherheitshinweis: Da odbc_do() keine parametrisierten Abfragen unterstützt, besteht bei direkter Einbettung von Nutzereingaben ein hohes SQL-Injection-Risiko. Nutzereingaben müssen immer validiert und – soweit möglich – über odbc_prepare() und odbc_execute() als Parameter übergeben werden.
odbc_do() ist ein Alias und verhält sich identisch zu odbc_exec(). Da Aliase in zukünftigen PHP-Versionen potenziell entfernt werden können, sollte in neuem Code bevorzugt odbc_exec() verwendet werden.