[sql] problème avec apostrophe
Résolu/Fermé
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
-
23 mai 2011 à 19:32
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 6 juin 2011 à 01:17
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 6 juin 2011 à 01:17
A voir également:
- [sql] problème avec apostrophe
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Requête sql date supérieure à ✓ - Forum Programmation
- Sql replace plusieurs valeurs - Forum Programmation
- Double apostrophe clavier ✓ - Forum Perl
11 réponses
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
23 mai 2011 à 20:52
23 mai 2011 à 20:52
Fait une page info.php sur ton serveur avec ce code (le nom de la page importe peu, c'est pour l'exemple):
Tu sauras si magicquote est activé ou non. Dans tout les cas, il ne faut pas mettre stripslashes() dans ta requête.
<?php phpinfo(); ?>
Tu sauras si magicquote est activé ou non. Dans tout les cas, il ne faut pas mettre stripslashes() dans ta requête.
Si tu ne souhaites pas avoir de soucis avec les quotes utilise ' [ALT Gr]+7.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 mai 2011 à 16:49
24 mai 2011 à 16:49
Hein ? ^^"
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 mai 2011 à 16:51
24 mai 2011 à 16:51
Pour répondre à arthezius :
voila l'enregistrement dans ma bdd a partir du POST.
voila l'enregistrement dans ma bdd a partir du POST.
$serie = $_POST['serie']; $serie = ucwords(strtolower($serie));//on met en majuscule les 1er lettre de chaque mot, les autres sont en minuscules. $serie = Trim($serie); $serie = mysql_real_escape_string(htmlspecialchars($serie)); puis la requete ou j'ajoute directement $serie
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
24 mai 2011 à 17:01
24 mai 2011 à 17:01
Ben justement, met moi ta requête aussi.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 mai 2011 à 17:10
24 mai 2011 à 17:10
'INSERT INTO raynal_video_serie (serie,type,description,realisateur,genre,genre2,format,creation,auteur,compteur) VALUES("'.$serie.'", "'.$type.'", "'.$description.'", "'.$realisateur.'", "'.$genre.'", "'.$genre2.'", "'.$format.'", NOW(), "'.$id_user.'", "0")'
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
24 mai 2011 à 17:40
24 mai 2011 à 17:40
Je ne vois rien de précis qui pourrait poser problème à l'enregistrement dans la BDD.
Sur ta requête:
Place un echo juste après pour vérifier que celle-ci passe correctement.
Logiquement, il devrait te retourner:
Sur ta requête:
SELECT id,serie FROM serie WHERE serie="'.mysql_real_escape_string($serie).'" ORDER BY serie ASC
Place un echo juste après pour vérifier que celle-ci passe correctement.
$sql='SELECT id,serie FROM serie WHERE serie="'.mysql_real_escape_string($serie).'" ORDER BY serie ASC'; echo $sql;
Logiquement, il devrait te retourner:
SELECT id,serie FROM serie WHERE serie="That\'s 70\'s Show" ORDER BY serie ASC
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 mai 2011 à 18:02
24 mai 2011 à 18:02
SELECT id,serie FROM raynal_video_serie WHERE serie="Ma Famille D\'abord" ORDER BY serie ASC
bon c'est un autre nom mais le problème est le même
voici ce que me retourne $serie avant la requete
Ma Famille D'abord
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
Modifié par arthezius le 24/05/2011 à 18:21
Modifié par arthezius le 24/05/2011 à 18:21
L'anti-slashes est ajouté par la fonction mysql_real_escape_string().
C'est normal s'il n'apparaît pas avant la requête et c'est également pour cette raison qu'il ne fallait pas mettre stripslashes() dans ta requête.
Comme tu utilises la même fonction sur la requête d'ajout à la base de donnée, tu devrais avoir la même valeur dans la base de donnée.
Vérifie en passant par PhpMyAdmin que tu as bien Ma Famille D\'abord d'enregistré.
Si le texte est exactement identique entre ta requête et la valeur de ta base de donnée, il n'y a aucune raison que ça ne fonctionne pas.
D'où proviens ta variable $serie de ta requête (avec le SELECT) ?
C'est normal s'il n'apparaît pas avant la requête et c'est également pour cette raison qu'il ne fallait pas mettre stripslashes() dans ta requête.
Comme tu utilises la même fonction sur la requête d'ajout à la base de donnée, tu devrais avoir la même valeur dans la base de donnée.
Vérifie en passant par PhpMyAdmin que tu as bien Ma Famille D\'abord d'enregistré.
Si le texte est exactement identique entre ta requête et la valeur de ta base de donnée, il n'y a aucune raison que ça ne fonctionne pas.
D'où proviens ta variable $serie de ta requête (avec le SELECT) ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 mai 2011 à 18:31
24 mai 2011 à 18:31
Ma chaine dans ma table est bien celle ci : Ma Famille D\'abord
$serie provient d'un fichier txt que j'extrais avec unserialize.
et lors de l'enregistrement de ce fichier, j'ai mis plusieurs données dans un tableau que je serialize pour le transport (dans le fichier).
$serie provient d'un fichier txt que j'extrais avec unserialize.
et lors de l'enregistrement de ce fichier, j'ai mis plusieurs données dans un tableau que je serialize pour le transport (dans le fichier).
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
27 mai 2011 à 13:29
27 mai 2011 à 13:29
Alors ? une idée de l'origine du problème ?
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
30 mai 2011 à 20:32
30 mai 2011 à 20:32
UP :)
je suis vraiment dans la panade là xD
je suis vraiment dans la panade là xD
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
1 juin 2011 à 19:44
1 juin 2011 à 19:44
Personne ? Vraiment personne ? :'(
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
1 juin 2011 à 22:26
1 juin 2011 à 22:26
bonjour,
esseyer
$serie="$_POST[serie]"; et dans la requete utilise
'".mysql_real_escape_string($serie)."'
esseyer
$serie="$_POST[serie]"; et dans la requete utilise
'".mysql_real_escape_string($serie)."'
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
2 juin 2011 à 13:24
2 juin 2011 à 13:24
C'est déjà fait.
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
3 juin 2011 à 22:18
3 juin 2011 à 22:18
$s="$_POST[serie]";
'".mysql_real_escape_string($s)."'
remarque b1 " " dans "$_POST[serie]";
'".mysql_real_escape_string($s)."'
remarque b1 " " dans "$_POST[serie]";
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
4 juin 2011 à 08:21
4 juin 2011 à 08:21
Je ne comprend pas ta dernière ligne.
remarque b1 " " dans "$_POST[serie]";
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
4 juin 2011 à 12:15
4 juin 2011 à 12:15
c-a-d met $_POST[serie] entre " "
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
4 juin 2011 à 12:22
4 juin 2011 à 12:22
mais qu'est ce que ça change avec ton post précédent ?
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
5 juin 2011 à 17:28
5 juin 2011 à 17:28
Alors voila, j'ai fait quelque test.
Si je prend toute ma table et que je fais la comparaison via php, ça fonctionne mais gros problème, je bouffe de la ressource a fond.
Autrement, c'est en rajoutant addslashes() comme ceci :
j'obtiens ceci :
et bizarrement, pour sql
ça : Ma Famille D\\\'abord
et ça : Ma Famille D\'abord
C'est la même chose ...
Vous comprenez quelque chose ??
Si je prend toute ma table et que je fais la comparaison via php, ça fonctionne mais gros problème, je bouffe de la ressource a fond.
Autrement, c'est en rajoutant addslashes() comme ceci :
$sql = 'SELECT id,serie FROM raynal_video_serie WHERE serie="'.mysql_real_escape_string(addslashes($serie)).'" ORDER BY serie ASC';
j'obtiens ceci :
SELECT id,serie FROM raynal_video_serie WHERE serie="Ma Famille D\\\'abord" ORDER BY serie ASC
et bizarrement, pour sql
ça : Ma Famille D\\\'abord
et ça : Ma Famille D\'abord
C'est la même chose ...
Vous comprenez quelque chose ??
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
6 juin 2011 à 01:15
6 juin 2011 à 01:15
addslashes fait la même chose que mysql_real_escape_string.
Autrement dit, ces deux fonctions te rajoute un slashes devant l'apostrophe.
Essai en remplaçant la fonction addslashes par stripslashes.
Autrement dit, ces deux fonctions te rajoute un slashes devant l'apostrophe.
Essai en remplaçant la fonction addslashes par stripslashes.
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
5 juin 2011 à 18:03
5 juin 2011 à 18:03
as ce que la valeur de $serie ==Ma Famille D'abord
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
5 juin 2011 à 18:06
5 juin 2011 à 18:06
oui c'est bien cette chaine de caractère
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
Modifié par ALIMIRO le 5/06/2011 à 18:12
Modifié par ALIMIRO le 5/06/2011 à 18:12
J'ai le même problème il ya quelque temps...
$s="$_POST[le nom de cham qui contient la valeur de serie]";
$sql ="SELECT id,serie FROM raynal_video_serie WHERE serie="'.mysql_real_escape_string(($s)).'" ";
copier et coller le test...
mon probleme avec l'insertion
$s="$_POST[le nom de cham qui contient la valeur de serie]";
$sql ="SELECT id,serie FROM raynal_video_serie WHERE serie="'.mysql_real_escape_string(($s)).'" ";
copier et coller le test...
mon probleme avec l'insertion
ALIMIRO
Messages postés
104
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
23 juin 2011
5 juin 2011 à 18:21
5 juin 2011 à 18:21
Si cela ne fonctionne pas j'ai une autre façon...
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
5 juin 2011 à 18:30
5 juin 2011 à 18:30
ça ne fonctionne pas.
J'ai alors modifier manuellement les nom dans ma table en enlevant les " \ " et ça fonctionne.
Merci de vos aides.
J'ai alors modifier manuellement les nom dans ma table en enlevant les " \ " et ça fonctionne.
Merci de vos aides.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
6 juin 2011 à 01:17
6 juin 2011 à 01:17
Bon, ben si ton problème est résolu, oubli ne tiens pas compte de mon dernier message.
23 mai 2011 à 21:13
24 mai 2011 à 05:49