Signatur
Beschreibung
cubrid_query() sendet eine SQL-Anweisung an die aktuell aktive (oder explizit angegebene) CUBRID-Datenbankverbindung. Die Funktion ist das CUBRID-Äquivalent zu mysql_query() und eignet sich für alle gängigen SQL-Operationen wie SELECT, INSERT, UPDATE, DELETE, CREATE und weitere DDL/DML-Anweisungen.
Bei datenrückgebenden Abfragen (SELECT, SHOW u. ä.) liefert die Funktion eine Ergebnis-Ressource, die anschließend mit Funktionen wie cubrid_fetch_array(), cubrid_fetch_row() oder cubrid_num_rows() verarbeitet werden kann. Bei nicht-datenrückgebenden Abfragen (z. B. INSERT, UPDATE) wird im Erfolgsfall true zurückgegeben.
Im Fehlerfall gibt die Funktion false zurück. Fehlermeldungen können anschließend mit cubrid_error() oder cubrid_errno() abgerufen werden. Nach Verwendung sollte eine SELECT-Ergebnis-Ressource mit cubrid_free_result() freigegeben werden, um Speicher freizugeben.
Für Abfragen mit Benutzereingaben sollten grundsätzlich vorbereitete Anweisungen (cubrid_prepare() in Verbindung mit cubrid_bind()) bevorzugt werden, um SQL-Injection zu verhindern. Alternativ müssen alle Eingaben mit cubrid_real_escape_string() sorgfältig maskiert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $query Pflicht | string | Die auszuführende SQL-Anweisung als Zeichenkette. Semikolons am Ende sind nicht erlaubt. Benutzereingaben müssen zuvor mit cubrid_real_escape_string() maskiert werden. |
|
| $conn_identifier | resource | Die CUBRID-Verbindungsressource, die von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wurde. Wird dieser Parameter weggelassen, wird die zuletzt geöffnete Verbindung verwendet. |
Rückgabewert
Bei datenrückgebenden Abfragen (SELECT, SHOW etc.) wird eine Ergebnis-Ressource zurückgegeben, die zur weiteren Verarbeitung an Fetch-Funktionen übergeben werden kann.
Bei nicht-datenrückgebenden Abfragen (INSERT, UPDATE, DELETE etc.) wird true bei Erfolg zurückgegeben. Im Fehlerfall gibt die Funktion stets false zurück.
Beispiele
Einfache SELECT-Abfrage mit Ergebnisverarbeitung
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$result = cubrid_query('SELECT id, name, email FROM users ORDER BY name', $conn);
if ($result === false) {
die('Abfrage fehlgeschlagen: ' . cubrid_error($conn));
}
while ($row = cubrid_fetch_assoc($result)) {
echo 'ID: ' . $row['id'] . ' | Name: ' . $row['name'] . ' | E-Mail: ' . $row['email'] . PHP_EOL;
}
cubrid_free_result($result);
cubrid_disconnect($conn);
?>
INSERT mit Benutzereingaben (sicher mit Escape)
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// Benutzereingaben immer escapen!
$name = cubrid_real_escape_string($conn, $_POST['name'] ?? 'Testnutzer');
$email = cubrid_real_escape_string($conn, $_POST['email'] ?? 'test@example.com');
$sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
$result = cubrid_query($sql, $conn);
if ($result === true) {
echo 'Datensatz erfolgreich eingefügt. Betroffene Zeilen: ' . cubrid_affected_rows($conn);
} else {
echo 'Fehler: ' . cubrid_error($conn);
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis (SQL-Injection): Niemals unkontrollierte Benutzereingaben direkt in eine SQL-Abfrage einbetten. Stattdessen sollten vorbereitete Anweisungen mit cubrid_prepare() und cubrid_bind() verwendet werden. Ist das nicht möglich, müssen alle Eingaben zwingend mit cubrid_real_escape_string() maskiert werden.
Ressourcen-Management: Ergebnis-Ressourcen von SELECT-Abfragen belegen Speicher und sollten nach der Verarbeitung immer mit cubrid_free_result() explizit freigegeben werden, besonders in Schleifen oder bei großen Ergebnismengen.
Transaktionen: CUBRID arbeitet standardmäßig im Auto-Commit-Modus. Für transaktionale Abfragen muss der Auto-Commit-Modus mit cubrid_set_autocommit() deaktiviert und nach den Abfragen cubrid_commit() oder cubrid_rollback() aufgerufen werden.