Hallo alle - dies ist eine Aufgabe an borisbaer. Nicht vorsagen 😉
Hallo borisbaer,
(ohne Fehlermeldung)
Was übersehe ich?
Die Fehlermeldung. Da muss eine sein. Dein generiertes SQL ist in dem von Dir beschriebenen Schlecht-Fall definitiv falsch.
Und Du übersiehst, dass man grundsätzlich SQL Fehlercodes prüfen und im Fehlerfall das generierte SQL zusammen mit allen verfügbaren Fehlerinformationen loggen muss. Dann weißt Du, was faul ist. Wenn nicht, kann ein Blick ins SQL Handbuch lehrreich sein.
Fehlermeldungen kann es nach jedem API Aufruf geben. Ob deine nach prepare() oder execute() kommt, weiß ich grad nicht. Einer von beiden geht schief.
Du könntest auch PDO::ATTR_ERRMODE auf PDO::ERRMODE_EXCEPTION setzen. Das geht auf jeden Fall im PDO-Konstruktor. Es geht auch mit der setAttribute-Methode. Ob es auch als $options-Parameter im prepare-Aufruf geht, weiß ich jetzt nicht. Mit dem EXCEPTION-Modus kannst Du den ganzen Block von prepare bis execute in einen einzigen try/catch einpacken und weißt, dass Du bei Fehlern automatisch in den catch-Teil fliegst. Das spart Dir die ständigen Fehlerabfragen.
Nebenbei 1: In generiertem SQL sollte man Tabellen- und Spaltennamen in Backticks einschließen
Nebenbei 2: Du solltest auch keine Defaultwerte für $columns und $conditions vorgeben. Ein leeres Array dürfte für beide Parameter keinen Sinn ergeben. Du solltest statt dessen eine Abfrage einbauen, ob mindestens ein Eintrag drin ist.
Rolf
sumpsi - posui - obstruxi