Start · Sprachen · PHP · Referenz · odbc_fetch_row

odbc_fetch_row

Funktion

Holt die nächste (oder eine bestimmte) Zeile aus einem ODBC-Ergebnis und gibt <code>true</code> bei Erfolg zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_fetch_row(resource $statement, int $row = 0): bool

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

Typ
bool
Beschreibung
Gibt 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);
ID: 1 | Name: Max Mustermann | E-Mail: max@example.com ID: 2 | Name: Erika Musterfrau | E-Mail: erika@example.com

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);
Artikel 3: ID=3, Name=Schreibtisch

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