tu fais une regex pour chaque partie et tu les assembles
(SELECT|UPDATE|INSERT|DELETE) [\w]+( ,[\w]+)*
=> j'ai pas géré les Alias de champ
FROM [\w]+( [\w]+)?( ,[\w]+( [\w]+)?)?
=> FROM table alias? ( ,table alias?)?
et comme c'est imbriqué, tu reprend tout ca, tu met dans ()? et tu colles à la suite. Par contre je sais pas si ca peut gérer l'inclusion infinie
ps: bien sûr si tes tables utilisent des underscores ou autres, faut les rajouter
ps: oublie pas les WHERE, ORDER BY, LIMIT etc
bon amusage 
ps: ensuite pour valider une requete, ton idée marche mais pour détecter l'endroit pile de l'erreur => nana. je pencherai plus sur tenter d'executer la requete et recuperer le message d'exception pour donner le detail. Orable ou autre ont des procedures toutes faites pour ca, autant ne pas s'embeter
Partager