Start · Sprachen · PHP · Referenz · cubrid_query

cubrid_query

Funktion

Sendet eine SQL-Abfrage an eine CUBRID-Datenbank und gibt bei SELECT, SHOW, EXPLAIN und ähnlichen Anweisungen eine Ergebnis-Ressource zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_query(string $query, resource $conn_identifier = ?): resource|bool

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

Typ
resource|bool
Beschreibung

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);
?>
ID: 1 | Name: Anna Müller | E-Mail: anna@example.com ID: 2 | Name: Max Mustermann | E-Mail: max@example.com

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);
?>
Datensatz erfolgreich eingefügt. Betroffene Zeilen: 1

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