In einem Projekt, das ich gerade beende, habe ich eine objektrelationale Mapping-Lösung für PHP geschrieben und implementiert. Bevor die Zweifler und Träumer "Wie um alles in der Welt?" Ausrufen, entspann dich - ich habe keinen Weg gefunden, die späte statische Bindung zu machen - ich arbeite nur so herum, wie es nur geht.PHP + MYSQLI: Variable Parameter-/Ergebnisbindung mit vorbereiteten Anweisungen
Wie auch immer, ich verwende derzeit keine vorbereiteten Anweisungen zur Abfrage, weil ich keine Möglichkeit gefunden habe, eine variable Anzahl von Argumenten an die Methoden bind_params()
oder bind_result()
zu übergeben.
Warum muss ich eine variable Anzahl von Argumenten unterstützen, fragen Sie? Weil die Oberklasse meiner Modelle (denke an meine Lösung als gehackter PHP ActiveRecord-Möchtegern) dort ist, wo die Abfrage definiert ist, und so weiß die find() - Methode zum Beispiel nicht, wie viele Parameter sie binden müsste .
Jetzt habe ich bereits daran gedacht, eine Argumentliste zu erstellen und eine Zeichenfolge an eval() zu übergeben, aber diese Lösung gefällt mir nicht besonders - ich würde lieber meine eigenen Sicherheitskontrollen implementieren und weitergeben Aussagen.
Hat jemand irgendwelche Vorschläge (oder Erfolgsgeschichten) darüber, wie man das schafft? Wenn Sie mir helfen können, dieses erste Problem zu lösen, können wir vielleicht das Binden der Ergebnismenge angehen (etwas, von dem ich vermute, dass es schwieriger oder zumindest ressourcenintensiver ist, wenn es eine anfängliche Abfrage zur Bestimmung der Tabellenstruktur beinhaltet).
Ich denke, dass sollte die Funktion 'statt 'bindparams' bind_param' werden. Zumindest benutze ich es mit meiner 'mysqli'-Version' $ stmt-> bind_param() ', nicht' $ stmt-> bindparams() '. Prost! –