Start · Sprachen · PHP · Referenz · odbc_do

odbc_do

Funktion

Alias von <code>odbc_exec()</code> – führt eine SQL-Anweisung direkt auf einer ODBC-Verbindung aus.

seit PHP 3.0.0 Kategorie: db

Signatur

odbc_do(resource $odbc, string $query, int $flags = 0): resource|false

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

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine ODBC-Ergebnis-Ressource zurück, die mit Funktionen wie 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);
ID: 1 – Name: Max Mustermann ID: 2 – Name: Erika Musterfrau

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);
Datensatz erfolgreich eingefügt.

// 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.