Der-Dennis: PDO und verkettete Parameter

Beitrag lesen

Hey DiBo33,

auch Dir danke für Deine Antwort.

Drösel doch einfach mal deine Versuche auf, 'foobar' an MD5() zu übergeben

Hab ich grad noch mal gemacht.

MD5(:paramA:paramB)
MD5('foo''bar') # Syntaxfehler

Wie im Ausgangsposting schon auch angemerkt: Syntaxfehler.

MD5(:paramA :paramB)
MD5('foo' 'bar') # Syntaxfehler

Bei mir komischerweise kein Syntaxfehler:
MD5(:paramA :paramB) => 3858f62230ac3c915f300c664312c63f
MD5('foo' 'bar')     => 3858f62230ac3c915f300c664312c63f

MD5(:paramA.:paramB)
MD5('foo'.'bar') # Syntaxfehler

Richtig.

MD5(:paramA+:paramB)
MD5('foo'+'bar') # ist gleich mit MD5(0)

Ist auch korrekt. Ich hatte nur vermeintlich "richtige" Werte bekommen, weil mein Parameter A ein String mit einem Integer als Inhalt ist. Also so etwas wie $x = '123'; Manchmal ist man echt einfach zu blöd!

MD5( CONCAT(:paramA, :paramB))
MD5( CONCAT('foo', 'bar')) # jetzt ist es korrekt

Ergibt bei mir das gleiche Ergebnis wie zweiten Beispiel: 3858f62230ac3c915f300c664312c63f. Auch wenn ich jetzt gesehen hab, wo mein Fehler war, versteh ich das trotzdem nicht. Ist MySQL hier wieder besonders nett und "verzeiht" einem so einen Fehler?

Bei meinen Versuchen grade ist mir auch noch was anderes aufgefallen:

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

funktioniert nicht. Sprich: Die Spalte test wird mit '' gefüllt, obwohl :paramA einen Wert hat. Hingegen funktioniert

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

ohne Probleme. Darf ich, wenn ich CONCAT verwende den Parameter nicht zweimal nutzen? Oder ist es einfach schon zu spät und ich schreib am besten morgen mal weiter?

Danke und Gruß, Dennis