Signatur
Beschreibung
odbc_result liest den Wert eines einzelnen Feldes aus der zuletzt mit odbc_fetch_row oder odbc_fetch_array gelesenen Ergebniszeile eines ODBC-Statements. Das Feld kann entweder über seinen numerischen Index (beginnend bei 1) oder über seinen Namen als Zeichenkette angesprochen werden.
Die Funktion ist besonders nützlich, wenn man gezielt auf einzelne Spalten zugreifen möchte, ohne das gesamte Ergebnis in ein Array zu laden. Sie arbeitet eng mit odbc_fetch_row zusammen: Erst wenn eine Zeile mit odbc_fetch_row geholt wurde, liefert odbc_result für diese Zeile sinnvolle Daten.
Der Rückgabewert ist in der Regel eine Zeichenkette. Binärdaten (z. B. BLOB-Felder) werden ebenfalls als Zeichenkette geliefert, können aber mit odbc_binmode und odbc_longreadlen gesteuert werden. Ist das Feld NULL, gibt die Funktion false zurück — ebenso bei einem Fehler.
ODBC ist eine datenbankagnostische Schnittstelle; odbc_result funktioniert daher mit allen ODBC-fähigen Datenbanken wie MS SQL Server, IBM DB2, Oracle u. v. m., sofern ein geeigneter ODBC-Treiber installiert ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges ODBC-Statement-Handle, das von odbc_exec oder odbc_execute zurückgegeben wurde. |
|
| $field Pflicht | int|string | Das gewünschte Feld, entweder als numerischer Index (beginnend bei 1) oder als Spaltenname (Zeichenkette, Groß-/Kleinschreibung wird in der Regel ignoriert). |
Rückgabewert
false, wenn das Feld NULL ist oder ein Fehler auftritt (z. B. ungültiger Feldname oder -index).Beispiele
Feldzugriff über Spaltenname
<?php
$conn = odbc_connect('MeineDSN', 'user', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$result = odbc_exec($conn, "SELECT id, name, email FROM kunden WHERE aktiv = 1");
if ($result) {
while (odbc_fetch_row($result)) {
$id = odbc_result($result, 'id');
$name = odbc_result($result, 'name');
$email = odbc_result($result, 'email');
echo "[$id] $name <$email>\n";
}
odbc_free_result($result);
}
odbc_close($conn);
Feldzugriff über numerischen Index
<?php
$conn = odbc_connect('MeineDSN', 'user', 'passwort');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$result = odbc_exec($conn, "SELECT vorname, nachname, geburtsdatum FROM mitarbeiter");
if ($result) {
while (odbc_fetch_row($result)) {
// Felder werden ab Index 1 gezählt
$vorname = odbc_result($result, 1);
$nachname = odbc_result($result, 2);
$geburtsdatum = odbc_result($result, 3);
if ($geburtsdatum === false) {
$geburtsdatum = 'unbekannt';
}
echo "$vorname $nachname, geb. $geburtsdatum\n";
}
odbc_free_result($result);
}
odbc_close($conn);
// Wichtig · Fallstricke
NULL-Felder: odbc_result gibt false zurück, wenn ein Feld den Datenbankwert NULL enthält, aber auch bei einem Fehler (z. B. ungültiger Feldname). Um zwischen echtem NULL und einem Fehler zu unterscheiden, kann man die Funktion odbc_error nach dem Aufruf prüfen.
Binär- und Langdaten: Bei BLOB- oder CLOB-Feldern sollte vor dem Abruf odbc_binmode und odbc_longreadlen gesetzt werden, um Datenverlust oder Abschneiden zu vermeiden.
Sicherheit: Benutzereingaben dürfen nie direkt in SQL-Abfragen eingebaut werden. Stattdessen sollten parametrisierte Abfragen mit odbc_prepare und odbc_execute verwendet werden, um SQL-Injection zu verhindern.
Feldnamen: Bei ambigen Spaltennamen (gleicher Name aus unterschiedlichen Tabellen bei JOINs) ist die Verwendung von Aliasen in der SQL-Abfrage empfohlen, da odbc_result bei Namenskonflikten nicht vorhersagbar agiert.