Tester la syntaxe d'une requête SQL ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester la syntaxe d'une requête SQL ?

par katagoto » 12 oct. 2008, 20:13

Le but est de créer une classe qui me permet de manipuler facilement des tables SQL (affichage d'un élément, ajout, suppression, etc.) pour simplifier mon code globalement.
Pour ça, PDOéxiste, pour l'analyse syntaxique, bah, si tu à un problème lorsque les noms de tables comporte des espaces, fait des noms sans espaces :lol:

Blagues à part, on pourrait faire un analyzeur syntaxique SQL, mais il aurrait des bugs, il y a des différences dans les syntaxes SQL en fonction des BDD, donc... :roll:

par abelthorne » 12 oct. 2008, 19:04

Mais ça paraît assez simple à réaliser, il suffit de déterminer si la chaîne passée en paramètre commence par certains mots-clé du langage SQL (select, insert, update, delete, create...).
Une table ne peut pas avoir un nom qui commence par ces mots-clés ?

Au début, je pensais tester s'il y avait des espaces dans la chaîne passée en paramètre puis je me suis aperçu qu'une table pouvait avoir une espace dans son nom.

Pour le moment j'ai fait une fonction qui exécute la requête et j'analyse le code de retour d'erreur : s'il y a erreur de syntaxe, je considère que c'est une nom de table et pas une requête, mais ce n'est pas très fiable comme méthode.
Tu peux nous en dire un peu plus sur cette classe et son utilité ?
Le but est de créer une classe qui me permet de manipuler facilement des tables SQL (affichage d'un élément, ajout, suppression, etc.) pour simplifier mon code globalement.
En fait, j'ai déjà une classe et j'essaie de l'améliorer (pour pouvoir manipuler des jointures plutôt qu'une seule table, notamment).

par Calimero » 12 oct. 2008, 18:48

Non, ça n'existe pas. C'est assez spécifique comme besoin :-)

Mais ça paraît assez simple à réaliser, il suffit de déterminer si la chaîne passée en paramètre commence par certains mots-clé du langage SQL (select, insert, update, delete, create...).

Tu peux nous en dire un peu plus sur cette classe et son utilité ?

Tester la syntaxe d'une requête SQL ?

par abelthorne » 12 oct. 2008, 18:09

Bonjour,
Existe-t-il une fonction PHP permettant de définir si une chaîne passée en paramètre est une requête SQL (de préférence sans l'exécuter, juste par analyse syntaxique) ?

Le but serait de créer une classe qui recevrait un paramètre :
- si c'est une requête SQL : on l'exécute
- sinon : on considère que c'est un nom de table et on exécute une requête type sur cette table