Hallo MB,
um ein SQL Statement zu validieren brauchst Du keine KI.
Wenn Du es unbedingt mit Flags lösen willst - dann würde ich die Plausibilisierungslogik hart codieren. SQL ist SQL, und die einzuhaltenden Bedingungen musst Du nicht abstrakt durch einen Logikbaum darstellen.
Ich glaube aber nicht, dass Flags hier sinnvoll sind. Eher ein Syntaxbaum und eine Prefix-Traversierung des Baumes (zuerst der Knoten, dann die Kinder). Das geht schick rekursiv, und das kann PHP.
- Ein Statement braucht genau ein SELECT, genau ein FROM, höchstens ein WHERE, höchstens ein GROUP, höchstens ein HAVING, höchstens ein ORDER BY.
Diese Abfrage muss dein Root-Objekt durchführen. Die SELECT, FROM, WHERE, GROUP, HAVING und ORDER Klauseln sind eigene Objekte, gelle, und die sollen sich bitte schön selbst prüfen. D.h. nachdem das Root-Objekt geprüft hat, was es kann, fragt es seine Kinder, ob sie in Ordnung sind.
Ein SELECT ist in Ordnung wenn es 1-N Spalten hat. Und den Rest überlässt es seinen Spalten.
Eine Spalte ist in Ordnung, wenn...
Du verstehst die Idee?
Rolf
sumpsi - posui - obstruxi