Hallo 1unitedpower,
Entferne den $safe-Operator.
das sehe ich anders. Das ist keine Frage der beteiligten Operanden, sondern eine Frage der SQL Generierung. Der Query-Builder verwendet Spaltennamen und Literale, denen es im Sinne von Separation-of-Concerns egal sein sollte, ob inline-Werte oder prepare verwendet wird - das sollte komplett und transparent vom der SQL Generierung behandelt werden.
Letztlich muss der Builder einen Syntax-Tree für die Query erzeugen, mit Namen von DB-Objekten (Table, Column) als Blätter und mit Operationen als Knoten. Dieser Tree muss so unabhängig von konkreten DB-Implementierungen wie nur möglich sein. Escaping, Parameterdeklarationen oder konkrete Schlüsselwörter gehören da nicht hinein. Dafür ist die zweite Komponente zuständig, der SQL-Codegenerator. Der sollte eine eigene Klasse sein. Entweder übergibt man dem Codegenerator den Baum zum Fraß, oder man steckt den Codegenerator in den Builder und lässt ihn vom Builder aufrufen. Ist letztlich egal. Und drittens braucht man ggf. noch eine Art Executor, gerade bei prepared statements, der generiertes SQL und Parameter sauber zusammenbringt und sich um die Instanziierung der Result-Objekte kümmert. Bei mysqli ist das Arbeit. PDO macht davon schon einiges automatisch, es muss nur in MBs Konzept eingepasst werden.
Rolf
sumpsi - posui - clusi