Signatur
Beschreibung
cubrid_bind() ermöglicht es, PHP-Variablen an Platzhalter (?) in einem mit cubrid_prepare() vorbereiteten SQL-Statement zu binden. Damit können Abfragen mit unterschiedlichen Parametern mehrfach ausgeführt werden, ohne das SQL neu kompilieren zu müssen – was sowohl die Performance als auch die Sicherheit verbessert.
Durch die Verwendung von gebundenen Parametern wird SQL-Injection zuverlässig verhindert, da Benutzereingaben niemals direkt in den SQL-Text eingefügt werden, sondern sauber getrennt als Parameterwerte übermittelt werden.
Der Parameter bind_value_type gibt den CUBRID-Datentyp explizit an (z. B. CHAR, INT, FLOAT, DATE). Wird er weggelassen, versucht die Funktion, den Typ automatisch zu ermitteln – für maximale Kontrolle empfiehlt sich jedoch die explizite Angabe.
Nach dem Binden aller Parameter kann das Statement mit cubrid_execute() ausgeführt werden. Mehrere Aufrufe von cubrid_bind() auf demselben Statement-Handle erlauben das sequenzielle Setzen aller Platzhalter.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $req_identifier Pflicht | resource | Das Statement-Handle, das zuvor mit cubrid_prepare() erzeugt wurde. |
|
| $bind_index Pflicht | int | Der 1-basierte Index des Platzhalters (?) im SQL-Statement, an den der Wert gebunden werden soll. |
|
| $bind_value Pflicht | mixed | Der PHP-Wert, der an den Platzhalter gebunden werden soll. Kann ein String, eine Zahl, ein Datum oder NULL sein. |
|
| $bind_value_type | string | Der CUBRID-Datentyp des gebundenen Wertes als String, z. B. 'CHAR', 'INT', 'FLOAT', 'DATE', 'NULL'. Wird dieser Parameter ausgelassen, erfolgt eine automatische Typermittlung. |
Rückgabewert
true zurück, wenn das Binden erfolgreich war. Im Fehlerfall wird false zurückgegeben.Beispiele
Einfaches INSERT mit cubrid_bind
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$sql = "INSERT INTO users (name, age, email) VALUES (?, ?, ?)";
$req = cubrid_prepare($conn, $sql);
$name = 'Max Mustermann';
$age = 30;
$email = 'max@example.com';
cubrid_bind($req, 1, $name, 'CHAR');
cubrid_bind($req, 2, $age, 'INT');
cubrid_bind($req, 3, $email, 'CHAR');
$result = cubrid_execute($req);
if ($result) {
echo "Datensatz erfolgreich eingefügt.";
} else {
echo "Fehler beim Einfügen: " . cubrid_error($conn);
}
cubrid_close($conn);
?>
SELECT mit gebundenen Parametern und Ergebnis-Iteration
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$sql = "SELECT name, email FROM users WHERE age > ? AND age < ?";
$req = cubrid_prepare($conn, $sql);
cubrid_bind($req, 1, 18, 'INT');
cubrid_bind($req, 2, 40, 'INT');
cubrid_execute($req);
while ($row = cubrid_fetch_assoc($req)) {
echo $row['name'] . ' – ' . $row['email'] . PHP_EOL;
}
cubrid_close_request($req);
cubrid_close($conn);
?>
// Wichtig · Fallstricke
Sicherheit: Verwende cubrid_bind() grundsätzlich für alle vom Nutzer stammenden Eingaben, um SQL-Injection zu verhindern. Baue Benutzerdaten niemals direkt per String-Konkatenation in SQL-Abfragen ein.
Typangabe: Wird bind_value_type nicht angegeben, kann es bei bestimmten Datentypen (z. B. Datums- und Zeitwerten) zu unerwarteten Konvertierungsfehlern kommen. Empfohlen wird daher stets die explizite Typangabe.
Index: Die Indizierung der Platzhalter beginnt bei 1, nicht bei 0. Ein falsch gesetzter Index führt zu einem Laufzeitfehler.
NULL-Werte: Zum Binden eines SQL-NULL-Wertes kann entweder null als bind_value übergeben oder 'NULL' als bind_value_type angegeben werden.