Aller au contenu

Sélectionner un champ contenant un apostrophe


sparh

Sujets conseillés

Bonjour,


je ne pensais pas bloquer un jour sur ce genre de problème et je suis très étonné de ne jamais l'avoir rencontré avant.



Je n'arrive pas à sélectionner le champ d'une table si la chaine de caractère contient un apostrophe.



Donc je suis dans phpMyAdmin, voici ma table :


261210sql1.png



Et voici le résultat de ma requête ??



SELECT id FROM Clients WHERE titre LIKE 'Parrat & D\'angelo Architectes'

302079sql2.png





Je ne comprends pas, avez vous une idée ?


Modifié par sparh
Lien vers le commentaire
Partager sur d’autres sites

l'apostrophe est échappée ( \' ) afin d'éviter toute injection de code qui créerais une faille de sécurité sur ton site web ou base de données.


C'est tout à fait normal. Si tu entre tes données directement via PHPMyAdmin, soit tu remplaces les ' par des \' dans tes valeurs, soit tu met un accent sans caractère pour "entourer" le texte désiré. à savoir:



SELECT id FROM Clients WHERE titre LIKE `Parrat & D'angelo Architectes`

Dans ce code, j'ai utilisé le caractère `, qui est l'accent grave. tu peux le faire en faisant ALT GR + µ (en clavier Belge) et ALT GR + 7 (pas du pavé numérique, celui au dessus de Y et U)


Lien vers le commentaire
Partager sur d’autres sites

Merci mais ta requête me renvoi : Unknown column 'Parrat & D\'angelo Architectes' in 'where clause'



Dans la table la chaîne est enregistré avec un \ car j'enregistre mes données en utilisant mysql_real_escape_string


Je cherche donc la chaîne : Parrat & D\'angelo Architectes

Lien vers le commentaire
Partager sur d’autres sites

recherche



SELECT id FROM Clients WHERE titre LIKE "Parrat & D\'angelo Architectes"

ou



SELECT id FROM Clients WHERE titre LIKE "Parrat & D'angelo Architectes"
Lien vers le commentaire
Partager sur d’autres sites

Pfiuuu merci pour vos conseils.


Avec LIKE rien à faire ça ne passe pas



SELECT id FROM Clients WHERE titre LIKE "Parrat & D\'angelo Architectes"

SELECT id FROM Clients WHERE titre LIKE "Parrat & D'angelo Architectes"

SELECT id FROM Clients WHERE titre LIKE "Parrat & D\\\'angelo Architectes"


Par contre avec = et \\\ ça marche !



SELECT id FROM Clients WHERE titre = 'Parrat & D\\\'angelo Architectes'
Lien vers le commentaire
Partager sur d’autres sites

Je pense savoir d'ou ça vient, sur mon serveur magic-quotes est activé.


Et comme quand j'enregistre mes données en échappant avec mysql_real_escape_string ça fait double échappement!



captain_torche --> si tu as une idée pas trop compliquée pour nettoyer la base (enlever tous les caractères qui ont été échappés 2 fois!) je suis preneur :)

Lien vers le commentaire
Partager sur d’autres sites

Personnellement, je n'utilise que PDO pour traiter mes requêtes, et surtout, j'use et j'abuse des requêtes préparées et des bindparams, et donc pas besoin de s'amuser à nettoyer avec mysql_real_escape_string, PDO, le traite correctement.


Lien vers le commentaire
Partager sur d’autres sites

Après un backup de ta table, tu pourrais essayer ceci :



UPDATE table SET champ = REPLACE(champ, "\\'", "'")

Le premier paramètre, sans les doubles quotes, est \\' (Deux antislashes et une simple quote)


Le second paramètre, sans les doubles quotes, est ' (Une simple quote)


Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...