Signatur
Beschreibung
odbc_fetch_row() liest eine Zeile aus einem ODBC-Ergebnis-Ressource, das zuvor durch odbc_exec() oder odbc_execute() erzeugt wurde. Bei jedem Aufruf ohne explizite Zeilennummer wird die jeweils nächste Zeile des Ergebnisses geladen, sodass man in einer Schleife alle Zeilen sequenziell verarbeiten kann.
Wird der optionale Parameter $row angegeben (muss größer 0 sein), springt die Funktion direkt zu dieser Zeile im Ergebnis. Diese Funktion setzt einen internen Cursor, der anschließend von Spaltenzugriffsfunktionen wie odbc_result() oder odbc_result_all() genutzt wird.
odbc_fetch_row() eignet sich besonders für einfache sequenzielle Ergebnisverarbeitungen, bei denen einzelne Felder über odbc_result() nach Namen oder Index abgerufen werden. Für komplexere Anforderungen bieten sich odbc_fetch_array() oder odbc_fetch_object() an.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Das ODBC-Ergebnis-Handle, das von odbc_exec(), odbc_execute() o. ä. zurückgegeben wurde. |
|
| $row | int | 0 | Optionale 1-basierte Zeilennummer, die direkt angesprungen werden soll. Wird 0 oder kein Wert übergeben, wird die nächste Zeile im Ergebnis-Cursor gelesen. |
Rückgabewert
true zurück, wenn eine Zeile erfolgreich geholt werden konnte, andernfalls false (z. B. am Ende des Ergebnisses oder bei einem Fehler).Beispiele
Alle Zeilen eines ODBC-Ergebnisses sequenziell auslesen
<?php
$conn = odbc_connect('MeinDSN', 'benutzer', 'geheim');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . odbc_errormsg());
}
$result = odbc_exec($conn, 'SELECT id, name, email FROM kunden');
if (!$result) {
die('Abfragefehler: ' . odbc_errormsg($conn));
}
while (odbc_fetch_row($result)) {
$id = odbc_result($result, 'id');
$name = odbc_result($result, 'name');
$email = odbc_result($result, 'email');
echo "ID: $id | Name: $name | E-Mail: $email\n";
}
odbc_free_result($result);
odbc_close($conn);
Direkt eine bestimmte Zeile per Zeilennummer abrufen
<?php
$conn = odbc_connect('MeinDSN', 'benutzer', 'geheim');
$result = odbc_exec($conn, 'SELECT id, name FROM artikel ORDER BY id');
// Direkt die 3. Zeile abrufen
if (odbc_fetch_row($result, 3)) {
$id = odbc_result($result, 1); // Spalte per Index
$name = odbc_result($result, 2);
echo "Artikel 3: ID=$id, Name=$name\n";
} else {
echo "Zeile 3 nicht vorhanden.\n";
}
odbc_free_result($result);
odbc_close($conn);
// Wichtig · Fallstricke
Hinweis zur Zeilennummer: Nicht alle ODBC-Treiber unterstützen den direkten Zeilenzugriff via $row. Ob das Scrollen unterstützt wird, hängt vom verwendeten Treiber und dem Cursor-Typ ab. Bei nicht unterstütztem Direktzugriff kann das Verhalten undefiniert sein.
Ressourcen freigeben: Nach der Verarbeitung sollte das Ergebnis mit odbc_free_result() und die Verbindung mit odbc_close() explizit freigegeben werden, um Ressourcenlecks zu vermeiden.
Sicherheit: SQL-Abfragen, die Benutzereingaben enthalten, sollten stets mit odbc_prepare() und odbc_execute() als Prepared Statements ausgeführt werden, um SQL-Injection zu verhindern.