Version complète: sur le forum Webmaster Hub : Recherche dans mysql avec like + chaine avec quote
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
zimounet
Salut tout le monde,

Voila, j'ai une requete de ce type:

mysql_query("SELECT * FROM table WHERE champ LIKE '%$search%'");

$search est == aujourd\'hui , valeur présente dans l'un des enregistrements de la table dans le champ "champ", je cherche donc aujourd\'hui

mais mysql ne me retourne rien!

Comment faire sad.gif

Il s'agit d'un champ de type varchar.

Merci de votre aide!
Portekoi
Bonjour,

Je n'ai pas bien compris :

Si tu fais ceci :

SQL
mysql_query("SELECT * FROM table WHERE champ LIKE '%".addslashes($search)."%'");


marche pas?


Portekoi
The Jedi
Si le caractère ' est encodé dans la base ça va poser soucis. Tu peux donner le contenu (copier/coller) du "champ" contenant "aujourd'hui" ? Avec un peu de bol tu comprendras même tout seul pourquoi ça ne retourne pas de ligne.
zimounet
salut a tous, et merci de votre aide!

le champ mysql content "aujourd'hui", contient: "aujourd\'hui"

l'apostrophe n'est donc apparement pas encodé...

Donc quand je fais ma requete, en reprenant l'exemple de portekoi, $search à pour valeur "aujourd\'hui", et pas "aujourd'hui"

Ca me prend grave la tete ce truc
zimounet
attendez, j'me suis p'tet planter dans la syntax effectivement. j're plus tard vous dire (dsl :$)
zimounet
Alors je viens de trouver le probleme, il faut échapper les caractères deux fois!

Donc pour rechercher "aujourd\'hui" qui devra retourner "ajourd\'hui"

Il faut faire la requete sur "ajourd\\\'hui"

Phrase Inutile


Un EXCELLENT tuto sur ces guillemet, doubles guillemets, avec php et avec les languages sql: http://frederic.bouchery.free.fr/?2005/02/...rophes-magiques
Portekoi
Bonjour,

Si tu dois échapper deux fois les ', c'est que tu dois forcément faire de même quand tu les insères.

Insertion => Addslashes
Récupération => Stripslashes

Autrement, tu t'es certainement planté quelque part. smile.gif


Portekoi
PS : Merci d'éviter les phrases inutiles.
The Jedi
aaah misère happy.gif tu utilisais les magic_quotes.
Les solutions données plus haut faisaient comme si elles étaient désactivées (et il faudra à terme faire en sorte que cette directive le soit).
zimounet
oui, mais je m'y suis toujours embrouillé avec ces quotes, j'ai presque pigé l'ensemble du truc, mais j'me fais encore souvent avoir...


donc, c'est les magic quotes de php qui sont activé et qui faudrai pas? c'est ça?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.