Start · Sprachen · PHP · Referenz · cubrid_bind

cubrid_bind

Funktion

Bindet eine PHP-Variable als Parameter an ein vorbereitetes CUBRID-Statement, um sichere und effiziente parametrisierte Abfragen auszuführen.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_bind(resource $req_identifier, int $bind_index, mixed $bind_value, string $bind_value_type = ''): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
Datensatz erfolgreich eingefügt.

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);
?>
Max Mustermann – max@example.com

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