Probleme avec l'apostrophe ???

Résolu
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009 - 24 janv. 2006 à 09:21
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009 - 28 janv. 2006 à 10:29
bonjours tout le monde

voila mon problem :

j'ai la requetes sql suivante:

$sql = "insert into table values('nom','exemple de l\'Habitat','+1');";

en executant cette instruction a partire de phpMyAdmin ------- ca marche ok

mais si je l'execute a partire d'une page php test.php ca ne marche pas et le message d'erreure afficher est :

Database error: Invalid SQL: insert into ministere values('',''
MySQL error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near exemple de l\' at line 1)
Session halted

le dexiemme apostrophe pose probleme ya pas de ; a cote (meme en faisant ca \ et / et \\)

ca m'enuie ce problem

merci d'avvance .

13 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 janv. 2006 à 15:38
"
$ARRAY[]=fgetcsv($FILE,1024);"

Tu récupères des infos d'un CSV ? Ca m'étonnerai... ils sont où tes virgules pour séparer les champs ?
Exemple d'un CSV : http://fr.wikipedia.org/wiki/CSV

$ARRAY[] =
 fgets($FILE, 4096); // A modifier dans ta fonction.

$nom=read("exemple.txt",","); // Faux, ta fonction ne prend qu'un seul argument !
$nom = read ('exemple.txt');
foreach ($nom as $key=>$val) {
echo $val.'
';
echo addslashes($val).'
';
echo mysql_escape_string($val).'
';
}

Et regarde maintenant !
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 janv. 2006 à 09:32
hello,

$sql = mysql_real_escape_string ("insert into table values('nom','exemple de l\'Habitat','+1')");
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 janv. 2006 à 11:14
Salut,

tu as bien crée trois champs dans ta table ? quels sont les types de données que tu as attribué pour chacun des champs ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
24 janv. 2006 à 11:50
avec ca :
$sql = mysql_real_escape_string ("insert into table values('nom','exemple de l\'Habitat','+1')");

ca ma donner le message d'erreur suivant:
Call to undefined function: mysql_real_escape_string()

tu as bien crée trois champs dans ta table ? quels sont les types de données que tu as attribué pour chacun des champs ?
oui tout est ok

esseyez de fair le meme exemple et vous verrez le problem

merci a vous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 janv. 2006 à 12:03
Essaye avec addslashes () alors;
et donne nous la structure de ta table en effet...
ou nomme expressement les champs
: insert into table (champ1, champ2, champ3) values (valeur1, valeur2, valeur3)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
24 janv. 2006 à 14:33
mysql_real_escape_string n'est apparu qu'avec une certaine version de PHP... tu dois en avoir une bien vieille alors :o

essaye mysql_escape_string(), celle ci marche partout. Par contre, pour utiliser cette fonction, tu dois avoir une connection avec ta base de donnée déja ouverte.
0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
25 janv. 2006 à 09:42
ok je vous remercie le problem est resolu merci a tous et a toi
FhX
seulement un autre problem ce pose si vous me permettez :
j'ai un fichier texte exemple.txt contenat une liste des nom
J'ai fais une fonction php pour lire ce fichier et me retourne les nom dans un tableau $nomvoila un exemple d'une valeur de $nom:

$nom[0]="exemple de l'Habitat"

mon but est de remplacer le " ' " par " \'" pour que je puisse l'inserrer dans ma base.
j'ai esseyer avec l'instruction suivante ca ne marche pas

$nom[0]=str_replace("'","\'",$nom[0]);
echo $nom[0];

l'apostrophe n'est pas remplacer je ne comprends vraiment rien

je me suis dit que peut etre il faut mettre le code ascii de ' alors j'ai refais

avec l'insruction suivante :

$nom[0]=str_replace("&#39;","\'",$nom[0]);

echo $nom[0]

toujours ca ne marche pas

pourriez vous m'aider ?

un grand merci pour votre aide
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 janv. 2006 à 09:53
Hello,

je crois que tu n'as pas tout compris lol. On échappe les apostrophes, on ne les remplace pas, en général :
$nom[0] = addslashes ("exemple de l'Habitat"
);

Sinon, pour ton str_replace :

<?php
$nom[0]= str_replace ("'","\", "exemple de l'Habitat");


echo $nom[0];


?>

\ étant le caractère d'échappement en php, il faut lui-même l'échapper si tu veux t'en servir ainsi, donc le doubler.

Mais ça n'a aucun intérêt...
0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
25 janv. 2006 à 10:05
pour etre plus clair

voila le script pour tester :
1.le fichier exemple.txt:
exemple de l'Interieur
exemple de l'Habitat
exemple de l'Energie et des Mines
exemple de l'Education National

2.le fichier exemple.php:

<?php
function read($filename){
if ( $FILE=fopen($filename,"r") )
{
$cpt_import=0;
while(!feof($FILE))
$ARRAY[]=fgetcsv($FILE,1024);
fclose($FILE) ;
array_pop($ARRAY); // efface la derniere ligne
return $ARRAY;}
}

$nom=read("exemple.txt",",");
$heigh=sizeof($nom);
$width=sizeof($nom[0]);
for($i=1;$i<$heigh;$i++)
{echo "
-------nom ap
";

$n = htmlspecialchars($nom[$i][0], ENT_QUOTES);

echo $n;

$n=str_replace("'","\'",$n);

echo "
-----nom san ap
";

echo $n;

echo "
---------------";

}

?>

merci a vous
0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
25 janv. 2006 à 10:07
Ca na pas marcher merci comme meme malalam

0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 janv. 2006 à 10:26
Ca marche, j'ai fait le test sur mon pc.
Quant tu fais "\'", tu échappes l'apostrophe! Forcément, ça ne va pas avoir le résultat attendu...
soit tu as une chaîn,e normale : "l'habitat", et tu fais mon str_replace, soit tu as "l\'habitat", et dans ce cas tu peux insérer dans ta base, cela fonctionnera.

Tu dois vraiment lire la doc sur les magic quotes (php.net)...
0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
25 janv. 2006 à 15:26
Chez moi ca ne marche pas c'est vraiment bizzard ca m'enuie ce problem
par exemple:
si je fais :
$name="str_replace(" ' "," \ '","exemple de l'education")
resultat ca marche
mais si je li le $name a partire d'un fichier texte ca ne marche pas
esseyez d'executer le script
une chose est sure la function str_replace fonctionne correctement
car si je remplace le p par /p ca marche
donc le problem est toujours le '
il ne le reconnais pas comme apostrophe mais comme un autre caractere , meme avec la function addslash ca ne marche pas

a l'aide
merci a vous

0
robert_zo Messages postés 17 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 avril 2009
28 janv. 2006 à 10:29
Bravo FhX

Merci a vous pour votre aide !!Bone chance à tous les developeurs


0
Rejoignez-nous