manulitox94
Messages postés2Date d'inscriptionvendredi 10 décembre 2010StatutMembreDernière intervention10 décembre 2010
-
10 déc. 2010 à 11:57
cs_morpheus57
Messages postés121Date d'inscriptionvendredi 31 mars 2006StatutMembreDernière intervention30 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
manulitox94
Messages postés2Date d'inscriptionvendredi 10 décembre 2010StatutMembreDernière intervention10 décembre 2010 10 déc. 2010 à 16:27
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']);
//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?