Signatur
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
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);
?>
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);
?>
// 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.