Start · Sprachen · PHP · Referenz · cubrid_execute

cubrid_execute

Funktion

Führt ein vorbereitetes SQL-Statement auf einer CUBRID-Datenbankverbindung aus und gibt ein Ergebnis-Handle zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

cubrid_execute(resource $conn_identifier, string $sql, int $option = 0): resource|false

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

Typ
resource|false
Beschreibung
Bei Erfolg wird eine Ergebnis-Ressource zurückgegeben, die für 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);
?>
ID: 1, Name: Alice ID: 2, Name: Bob

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);
?>
Eingefügt. OID: @0|0|0

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