Encore apostrophe

Eléphant du PHP | 287 Messages

24 oct. 2008, 17:33

Rebonjour,
J'ai résolu une partie de mon problème tut à l'heure, mais en avançant dans mon travail, je viens de voir qu'à nouveau un problème d'apostrophe survient lorsque je saisis du texte.
Alors je suppose qu'il s'agit encore d'un caractère échappé...
Voici le message d'erreur :
Erreur SQL !INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,nom_critere) VALUES('','Europe','France','Europe de l\'Ouest','hdfsds','hs'','http://','','Villes')
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 'http://','','Villes')' at line 1
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 oct. 2008, 17:42

Bonjour,

Avec un éditeur qui et fait la coloration syntaxique, tu verrais tout de suite qu'il y a un problème :
INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,nom_critere) VALUES('','Europe','France','Europe de l\'Ouest','hdfsds','hs'','http://','','Villes') 
Pour éviter ces problèmes d'apostrophes non-échapées, utilises mysql_real_escape_string sur tous les champs texte de ta requêtes.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 287 Messages

24 oct. 2008, 17:47

désolé je vois pas où mettre ce "mysql_real_escape_string"

Mammouth du PHP | 2937 Messages

24 oct. 2008, 18:26

désolé je vois pas où mettre ce "mysql_real_escape_string"
Dans le code PHP qui permet de réaliser la requête :
$sql = "INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,nom_critere) VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string('Europe')."','".mysql_real_escape_string('France')."','".mysql_real_escape_string('Europe de l\'Ouest')."','".mysql_real_escape_string('hdfsds')."','".mysql_real_escape_string('hs')."','".mysql_real_escape_string('http://')."','".mysql_real_escape_string('')."','".mysql_real_escape_string('Villes')."')";

Eléphant du PHP | 287 Messages

27 oct. 2008, 12:52

Bonjour,
Voici ce que j'ai mis :
$sql = "INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,nom_critere) 
VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string('$continent')."','".mysql_real_escape_string('$pays')."','".mysql_real_escape_string('$sous_continent')."','".mysql_real_escape_string('$ville')."','".mysql_real_escape_string('$nom_webcam')."','".mysql_real_escape_string('$lien_webcam')."','".mysql_real_escape_string('')."','".mysql_real_escape_string('$nom_critere')."')";
Et quand je regarde ma BDD, j'ai tjs $...
Merci

Mammouth du PHP | 2937 Messages

27 oct. 2008, 13:04

Normal, tu as inséré les variables entre guillemets simples : elles ne sont donc pas interprétées. Ôte les guillemets simples comme suit :
$sql = "INSERT INTO webcam(idwebcam,continent,pays,sous_continent,ville,nom_webcam,lien_webcam,stat_visite,nom_critere)  
VALUES('".mysql_real_escape_string('')."','".mysql_real_escape_string($continent)."','".mysql_real_escape_string($pays)."','".mysql_real_escape_string($sous_continent)."','".mysql_real_escape_string($ville)."','".mysql_real_escape_string($nom_webcam)."','".mysql_real_escape_string($lien_webcam)."','".mysql_real_escape_string('')."','".mysql_real_escape_string($nom_critere)."')";

Eléphant du PHP | 287 Messages

27 oct. 2008, 13:10

Super !
Excusez, mais je débute en PHP !
Encore merci

Mammouth du PHP | 2937 Messages

27 oct. 2008, 13:14

Excusez, mais je débute en PHP !
Tu n'as pas à t'excuser : il faut bien un début à tout. ;)