Signatur
Beschreibung
cubrid_execute() sendet eine SQL-Abfrage an den CUBRID-Datenbankserver und führt sie aus. Die Funktion akzeptiert eine bestehende Verbindungsressource sowie den SQL-String und liefert bei Erfolg eine Ergebnis-Ressource zurück, die anschließend mit Funktionen wie cubrid_fetch() oder cubrid_fetch_assoc() ausgewertet werden kann.
Über den optionalen Parameter $option lässt sich das Verhalten der Ausführung steuern. Beispielsweise kann mit CUBRID_INCLUDE_OID die OID (Object Identifier) des bearbeiteten Datensatzes mitgeliefert werden, oder mit CUBRID_ASYNC eine asynchrone Ausführung angefordert werden. Diese Flags können auch kombiniert werden.
Die Funktion eignet sich für einfache, einmalige SQL-Abfragen direkt über die Verbindung. Für wiederholte Abfragen mit variablen Parametern ist es vorzuziehen, zunächst mit cubrid_prepare() ein Statement vorzubereiten und danach mit cubrid_execute() in der Variante mit einer vorbereiteten Anfrageressource auszuführen.
Nach Verwendung des Ergebnis-Handles sollte dieses mit cubrid_close_request() freigegeben werden, um Ressourcen nicht unnötig zu belegen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Die aktive CUBRID-Verbindungsressource, wie sie von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wird. |
|
| $sql Pflicht | string | Das auszuführende SQL-Statement als Zeichenkette, z. B. ein SELECT-, INSERT-, UPDATE- oder DELETE-Ausdruck. |
|
| $option | int | 0 | Optionale Ausführungs-Flags. Mögliche Werte sind CUBRID_INCLUDE_OID (OID in Ergebnismenge einschließen) und CUBRID_ASYNC (asynchrone Ausführung). Mehrere Flags können mit | (bitweises ODER) kombiniert werden. |
Rückgabewert
SELECT-Abfragen mit Fetch-Funktionen ausgewertet werden kann. Bei INSERT-, UPDATE- oder DELETE-Abfragen gibt die Funktion true zurück. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfache SELECT-Abfrage mit cubrid_execute
<?php
$conn = cubrid_connect('localhost', 33000, 'testdb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$result = cubrid_execute($conn, 'SELECT id, name FROM users WHERE active = 1');
if ($result) {
while ($row = cubrid_fetch_assoc($result)) {
echo 'ID: ' . $row['id'] . ', Name: ' . $row['name'] . PHP_EOL;
}
cubrid_close_request($result);
} else {
echo 'Fehler: ' . cubrid_error($conn);
}
cubrid_disconnect($conn);
?>
INSERT-Abfrage mit OID-Option
<?php
$conn = cubrid_connect('localhost', 33000, 'testdb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
$sql = "INSERT INTO products (name, price) VALUES ('Widget', 9.99)";
$result = cubrid_execute($conn, $sql, CUBRID_INCLUDE_OID);
if ($result) {
$oid = cubrid_current_oid($result);
echo 'Eingefügt. OID: ' . $oid . PHP_EOL;
cubrid_close_request($result);
} else {
echo 'Fehler beim Einfügen: ' . cubrid_error($conn);
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Sicherheitshinweis: cubrid_execute() führt SQL-Strings direkt aus, ohne sie zu parametrisieren. Werden Benutzereingaben direkt in den SQL-String eingebettet, besteht eine erhebliche SQL-Injection-Gefahr. Verwende stattdessen cubrid_prepare() in Kombination mit cubrid_bind(), um Parameter sicher zu binden.
Die Funktion ist spezifisch für die CUBRID-Datenbankerweiterung und nicht mit anderen PHP-Datenbank-APIs kompatibel. Sie steht nur zur Verfügung, wenn die CUBRID-Erweiterung installiert und aktiviert ist.
Ergebnis-Ressourcen sollten nach der Verwendung immer mit cubrid_close_request() freigegeben werden, da offene Handles Serverressourcen auf der Datenbankseite belegen können.