Aller au contenu

Recherche dans mysql avec like + chaine avec quote


Sujets conseillés

Posté

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 :(

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

Merci de votre aide!

Posté

Bonjour,

Je n'ai pas bien compris :

Si tu fais ceci :

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

marche pas?

Portekoi

Posté

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.

Posté

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

Posté

attendez, j'me suis p'tet planter dans la syntax effectivement. j're plus tard vous dire (dsl :$)

Posté (modifié)

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

Modifié par Portekoi
Posté

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. :)

Portekoi

PS : Merci d'éviter les phrases inutiles.

Posté

aaah misère ^^ 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).

Posté

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?

Veuillez vous connecter pour commenter

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



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