Difference entre select monchamps et select `monchamp`

Résolu
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 - 21 mai 2008 à 13:40
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 - 30 juin 2008 à 09:23
Bonjour à la communauté CS SQL,

Suite à un problème qui m'arrive aujourd'hui une question me vient à l'esprit j'ai une base de données MySQL j'ai déjà remarqué que des fois dans les requètes il y des accents grave (`) autours des noms de champs je ne me suis jamais posé la question et on ne m'en a jamais parlé en cours donc pour moi c'est qu'il n'y avait aucun interêt à ça.
Aujourd'hui quand j'ai voulu faire une requête j'ai eu en réponse une erreur et que quand mon champ est entre accent grave je n'ai plus d'erreur.
Pourquoi???

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)

4 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
23 mai 2008 à 23:43
Salut

Il me semble c'est des notions de sécurité
et pour gérer des nom de table à espace (peut être possible en mysql)
comme le permet sqlserver ou access par exemple

mais avec la syntaxe

select * from [ma table]

Je  n'arrive pas a trouvé de justification dans la documentation, mais ca foit être indiqué

Bon coding
3
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 4
29 juin 2008 à 04:38
Effectivement, on peut créer des tables en utilisant des caractères comme les espacements qui normallement provoqueraient des erreurs de script. Il faut alors effectivement utiliser ces apostrophes inversées. Inutile des les préciser systématiquement, mais par exemple dans le cas où le nom d'une table n'est pas créee manuellement par tes soins mais par un script et que son nom est susceptible de contenir des caractères spéciaux, il est plus prudent de les utiliser.

J'ai créé une fois un site où les utilisateurs avaient chacun leur compte. Chacun des ces utilisateurs possédaient une boîte de messages privés. Or comme mes requêtes se font systématiquement pour un utilisateur donné, il était inutile de mettre tous les messages du site sur la même table. J'ai donc créé une table par utilisateur pour accélérer les requêtes. Mais comme je ne savais pas à l'époque rappatrier la dernière clé primaire créé automatiquement par AUTO_INCREMENT, j'ai donc choisi de faire des noms de table ressemblant à `message_`. Et comme ce pseudo pouvait contenir des caractères qui auraient fait échouer les requêtes en temps normal, j'ai utilisé les apostrophes inversées qui permettent de délimiter le nom de la table pour que SQL puisse les comprendre correctement.
3
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
23 mai 2008 à 23:57
Merci beaucoup pour ta réponse.
Justement je n'ai rien trouvé dans la doc d'ou ma question.

<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
0
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
30 juin 2008 à 09:23
Bonjour,

Le mystère s'éclaircit donc. Ok je comprend mieux maintenant même si j'ai ma réponse un mois après ça me convient.

Merci :-)
<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
0
Rejoignez-nous