robert_zo
Messages postés17Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention13 avril 2009
-
24 janv. 2006 à 09:21
robert_zo
Messages postés17Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention13 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 \\)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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).'
';
}
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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.
robert_zo
Messages postés17Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention13 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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
robert_zo
Messages postés17Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention13 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
";
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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)...
robert_zo
Messages postés17Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention13 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