Probleme avec l'apostrophe ??? [Résolu]

Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
- - Dernière réponse : robert_zo
Messages postés
17
Date d'inscription
mardi 10 mai 2005
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 .
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
18 avril 2015
3
Merci
"
$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 !

Merci FhX 3

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

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de FhX
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
hello,

$sql = mysql_real_escape_string ("insert into table values('nom','exemple de l\'Habitat','+1')");
Commenter la réponse de malalam
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
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
Commenter la réponse de robert_zo
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
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)
Commenter la réponse de malalam
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
18 avril 2015
0
Merci
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.
Commenter la réponse de FhX
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
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
Commenter la réponse de robert_zo
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
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...
Commenter la réponse de malalam
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
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
Commenter la réponse de robert_zo
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
Ca na pas marcher merci comme meme malalam

Commenter la réponse de robert_zo
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
0
Merci
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)...
Commenter la réponse de malalam
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
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

Commenter la réponse de robert_zo
Messages postés
17
Date d'inscription
mardi 10 mai 2005
Dernière intervention
13 avril 2009
0
Merci
Bravo FhX

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


Commenter la réponse de robert_zo

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.