Problème Apostrophe dans select [Résolu]

Messages postés
2
Date d'inscription
vendredi 10 décembre 2010
Dernière intervention
10 décembre 2010
- - Dernière réponse : cs_morpheus57
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Dernière intervention
30 décembre 2010
- 10 déc. 2010 à 16:35
Bonjour,
j'ai cherché des solutions sur google et dans les forums, mais je n'ai rien trouvé qui résoud mon problème.

Je simplifie mon code pour expliquer mon pb.

Je récupère d'un formulaire un champ avec un ' dedans (exemple: l'information) lors de la récupération, j'ajoute un addslashes(), et l'ajout ds la BDD se fait bien.
ensuite, je vais récuperer d'un formulaire toujours un champ, toujours avec un ', et je veux le comparer avec ce qui est présent dans la BDD, pour qu'il me trouve si il y a deja une entrée avec cette chaine.

j'ai donc:

$titre = utf8_decode($_POST["titre"]); //récupère le champ du formulaire

$quer = mysql_query("SELECT * FROM `webcal_entry` WHERE `cal_name` LIKE '".$titre."'")or die('Erreur SQL !
'.mysql_error()); //requete

$resultat = mysql_fetch_array($quer); //execute la requete

$nb = mysql_num_rows($quer); // nb d'enregistrements trouvés

et $nb reste toujours à 0 si il y'a un ' dans $titre.

si je passe une chaine sans ', il n'y a pas de problème, $nb==1

si j'affiche $titre, j obtient: l\'information
si j'affiche le champ de la table, j obtient: l\'information
mais il ne les considère pas comme identiques...


quelqu'un voit d'ou peut venir le probleme?
merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
11
3
Merci
Pour ma part, je te conseille d'utiliser real_escape_string dans ton insertion en base. ..et d'en profiter pour utiliser MySQLi.
S.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de syndrael
Messages postés
2
Date d'inscription
vendredi 10 décembre 2010
Dernière intervention
10 décembre 2010
3
Merci
bonjour et merci pour vos réponses,
@morpheus57 en allant sur le lien, ils marquent: "Il n'y a aucune raison d'utiliser les guillemets magiques, car ils ne sont plus supportés en PHP." je ne vais donc pas chercher dans cette direction, mais merci quand meme.

@syndrael j'ai essayé d'utiliser mysql_real_escape_string(), et ca fonctionne comme ca, il retrouve bien mon champ avec l'apostrophe quand je fais ma requete sur ma table.

voila le code:
pour l'insert:

//je récupere les champs du form
$qui = utf8_decode($_POST['qui']);
$titre utf8_decode($_POST[titre ]); // L'information
$description = utf8_decode($_POST['description']);

//la requete
$query = sprintf("INSERT INTO webcal_entry (`cal_user`, `cal_name`, `cal_description`) VALUES ('%s', '%s', '%s')",
$qui,
mysql_real_escape_string($titre, $link),
mysql_real_escape_string($description, $link));

//j execute la requete.
mysql_query($query, $link)or die(mysql_error()); là, l'insert dans la table est fait sans \, donc dans la table j'ai "L'information"

et quand je fais un SELECT pour comparer avec ce qu'il y a dans la table, il me le trouve bien (mais je dois ajouter un \ lorsque je fais le SELECT, sinon erreur)

$quer1 = mysql_query("SELECT * FROM `webcal_entry` WHERE `cal_name` LIKE '".addslashes($cal_name)."'")or die(mysql_error());
$nb = mysql_num_rows($quer1);
echo "nb: ".$nb."
"; // affiche 1

il me reste maintenant a voir si les champs qui ont été saisie avant que j'utilise mysql_real_escape_string() (donc avec des \ dans la BDD) sont bien reconnus ou si je dois tout rééditer...

syndrael, une question, mysqli: quel est l'intéret de l'utiliser par rapport a mysql?

merci beaucoup pour votre aide
A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de manulitox94
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Dernière intervention
30 décembre 2010
1
0
Merci
Salut,

Tu peux regarder de ce côté aussi :
http://php.net/manual/fr/security.magicquotes.php
Commenter la réponse de cs_morpheus57
Messages postés
122
Date d'inscription
vendredi 31 mars 2006
Dernière intervention
30 décembre 2010
1
0
Merci
Justement, je voulais dire : "Assure toi de bien avoir désactivé les magicquotes dans ta config PHP"
Commenter la réponse de cs_morpheus57

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.