Hi,
Zahlenwerte können auch als String übergeben werden. Probier mal alle relevanten Typen aus, ob sie sich als s übergeben lassen.
Funktioniert.
Welchen Nutzen hat es dann überhaupt hier etwas anderes zu verwenden?
Nein, du kannst nur Werte binden, keine Bezeichner. Aber was genau stört dich? Code zu schreiben, der aus einem Array mit Spaltennamen ein INSERT-Statement zusammenbaut ist eine einmalige Angelegenheit und auch keine Raketenwissenschaft.
Das Problem ist nicht das Zusammenbauen des SQLs, sondern das übergeben der Paramter an bind().
->bind('s',$fieldValue['first'], $fieldValue['second'], ...)
Ich weiß nicht wie ich die verschiedene Anzahl an Parametern variabel machen könnte.
Ohne Prepared-Statement wär's kein Problem, aber dann müsste ich mich ja selber um den Kontextwechsel kümmern :-(
Zudem werden AFAIK Prepared-Statements effizienter gecachet(?)
Ich würde den Code kapseln (Funktion oder Objekt) und dabei keinen direkten Zugriff auf externe Dinge verwenden, sondern alle benötigten Werte per Parameter übergeben. Dantenbankzugriff ist etwas sehr allgemeines, was man gut wiederverwenden kann, wenn man es nicht mit projektspezifischen Dingen spickt.
Da hast du Recht. Wird gemacht.
Gute Idee, die Bezeichner zu maskieren, aber falsche Ausführung. Da sind gleich drei Fehler enthalten.
$mysqli->prepare('DELETE FROM
'.str_replace('','``',$tableName).'
WHERE id = ?');`
So dann richtig?
~dave