Der-Dennis: PDO und verkettete Parameter

Beitrag lesen

Hey dedlfix,

danke für Deine Antwort!

$sql = "INSERT INTO tabelle (id, ...) VALUES ( MD5(:paramA:paramB), ...)";

Die beiden Platzhalter sind quasi wie Variablen zu betrachten. Wenn du sie verknüpfen willst, musst du schon angeben, welche der verschiedenen Verknüpfungsarten verwendet werden sollen.

Das dachte ich auch. Hab's auch mit

  
$sql = "INSERT INTO tabelle (id, ...) VALUES ( MD5(:paramA.:paramB), ...)";  

probiert. Auch hier kommt der Fehler "You have an error in your MySQL Syntax...".

$sql = "INSERT INTO tabelle (id, ...) VALUES ( MD5(:paramA+:paramB), ...)";

Möchtest du eine Addition oder eine Stringverknüpfung haben? Hast du dich vergewissert, dass das Ergebnis der MD5-Funktion das gleiche ist, wie wenn du statt der beiden Werte mal ein Literal nimmst, das dem Ergebnis deiner Verknüpfungsoperation entspricht?

Da bin ich grad natürlich wieder nicht drauf gekommen, hab's aber grad mal ausprobiert:

Der MD5-Hash ist der gleiche, egal ob ich die Variablen an Parameter binde oder ob ich die Werte direkt ins SQL-Statement schreibe. Auch wenn ich die CONCAT-Funktion

  
$sql = "INSERT INTO tabelle (id, ...) VALUES ( MD5( CONCAT(:paramA, :paramB)), ...)";  

nehme ergibt das den gleichen Hash. Ich versteh's nicht, das Ergebnis scheint ja richtig zu sein. Nur erklären kann ich es nicht.

Gruß, Dennis