Start · Sprachen · PHP · Referenz · cubrid_fetch_object

cubrid_fetch_object

Funktion

Holt die nächste Ergebniszeile einer CUBRID-Abfrage und gibt sie als Objekt zurück, dessen Eigenschaften den Spaltennamen entsprechen.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_fetch_object(resource $result, string $class_name = 'stdClass', array $params = []): object|false

Beschreibung

cubrid_fetch_object() liest die jeweils nächste Zeile aus dem übergebenen Ergebnis-Ressource-Handle einer CUBRID-Datenbankabfrage und gibt sie als Objekt zurück. Jede Spalte des Ergebnisses wird dabei zu einer öffentlichen Eigenschaft (Property) des Objekts, wobei der Spaltenname als Eigenschaftsname dient.

Standardmäßig wird ein stdClass-Objekt erzeugt. Über den optionalen Parameter class_name lässt sich eine benutzerdefinierte Klasse angeben, in die die Daten geladen werden. Mit params können dabei Argumente an den Konstruktor der angegebenen Klasse übergeben werden.

Diese Funktion eignet sich besonders gut, wenn Datenbankzeilen direkt als Objekte verarbeitet werden sollen, beispielsweise in objektorientierten Anwendungen oder wenn die Daten in bestimmte Domänen-Modell-Klassen gemappt werden sollen. Im Gegensatz zu cubrid_fetch_array() oder cubrid_fetch_row() entfällt der Zugriff über numerische oder assoziative Array-Schlüssel.

Wurden alle Zeilen gelesen oder tritt ein Fehler auf, gibt die Funktion false zurück. Dies ermöglicht den typischen Einsatz in einer while-Schleife.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das Ergebnis-Handle, das von Funktionen wie cubrid_query() oder cubrid_execute() zurückgegeben wurde.
$class_name string stdClass Name der Klasse, die instanziiert werden soll. Die Spaltenwerte werden als Eigenschaften der Instanz gesetzt. Standardmäßig wird stdClass verwendet.
$params array [] Ein optionales Array mit Argumenten, die an den Konstruktor der durch class_name angegebenen Klasse übergeben werden.

Rückgabewert

Typ
object|false
Beschreibung
Gibt ein Objekt zurück, dessen Eigenschaften den Spaltennamen und -werten der aktuellen Ergebniszeile entsprechen. Wenn keine weiteren Zeilen vorhanden sind oder ein Fehler auftritt, wird false zurückgegeben.

Beispiele

Einfaches Auslesen einer Tabelle mit stdClass

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

$result = cubrid_query('SELECT id, name, email FROM users', $conn);

while ($row = cubrid_fetch_object($result)) {
    echo 'ID: ' . $row->id . PHP_EOL;
    echo 'Name: ' . $row->name . PHP_EOL;
    echo 'E-Mail: ' . $row->email . PHP_EOL;
    echo '---' . PHP_EOL;
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
ID: 1 Name: Max Mustermann E-Mail: max@example.com --- ID: 2 Name: Erika Muster E-Mail: erika@example.com ---

Ergebniszeilen in eine benutzerdefinierte Klasse laden

<?php
class User {
    public int $id;
    public string $name;
    public string $email;
    private string $source;

    public function __construct(string $source = 'database') {
        $this->source = $source;
    }

    public function getInfo(): string {
        return "[{$this->source}] #{$this->id}: {$this->name} ({$this->email})";
    }
}

$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$result = cubrid_query('SELECT id, name, email FROM users LIMIT 2', $conn);

while ($user = cubrid_fetch_object($result, 'User', ['CUBRID'])) {
    echo $user->getInfo() . PHP_EOL;
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
[CUBRID] #1: Max Mustermann (max@example.com) [CUBRID] #2: Erika Muster (erika@example.com)

// Wichtig · Fallstricke

Hinweis zu Spaltennamen: Die Eigenschaften des zurückgegebenen Objekts werden direkt aus den Spaltennamen der SQL-Abfrage abgeleitet. Spaltennamen mit Sonderzeichen oder Leerzeichen können zu ungültig benannten Eigenschaften führen – in solchen Fällen empfiehlt sich die Verwendung von Aliasnamen in der SQL-Abfrage.

Klassenzuweisung: Wenn eine benutzerdefinierte Klasse angegeben wird, werden die Spaltenwerte nach dem Aufruf des Konstruktors in die Eigenschaften geschrieben. Eigenschaften, die im Konstruktor gesetzt wurden, können dabei durch Spaltenwerte überschrieben werden, sofern der Spaltenname mit dem Eigenschaftsnamen übereinstimmt.

Ressourcen-Verwaltung: Das Ergebnis-Handle sollte nach der Verarbeitung stets mit cubrid_close_request() freigegeben werden, um Speicherlecks zu vermeiden.