PDO preparing statements

tipster

Grünschnabel
Hi Leute!

Ich habe eine Verständnisfrage zu preparing statements. Ist es möglich gebindete Parameter öfter als einmal in einem Query zu verwenden? Folgendes Beispiel:

PHP:
$stmt = $dbh->prepare("INSERT INTO tabelle SET id = :id, wert= :wert ON DUPLICATE KEY UPDATE wert = :wert");
$stmt->bindParam(':id', $obj->id, PDO::PARAM_STR);
$stmt->bindParam(':wert', $obj->wert, PDO::PARAM_STR);
$stmt->execute();

Hier bekomme ich einen SQLSTATE[HY093] error. Setze ich anstelle des gebindeten Parameters :wert irgendetwas ein funktioniert das Statement so wie es sollte. Meine Frage daher, ist es nicht möglich :wert öfters als einmal im sql Statement zu verwenden? Wenn ja wie würdet ihr das sinnvoll und "sauber" umsetzen?

Danke, lg
 
Hi!

Da hast du recht, nur mit dem Nachteil das du $obj->wert wieder 2 mal angeben musst. Ich wollte die Variable einmal binden und mehrmals verwenden, aber das geht anscheinend nicht. Dann seh ich den sinn dahinter nicht ganz :)
 
Danke für den Link. Nein ich meinte ich versteh den Sinn von gebindeten Variablen nicht ganz wenn man sie nicht doppelt in einem Statment verwenden kann. Wie in deinem Artikel ersichtlich ist es schon praktisch, speziell Bsp. 3 aber in meinem Fall habe ich durch gebindete Variablen keinen Vorteil.
 
Zurück