blocage suite syntax

william5398
Invité n'ayant pas de compte PHPfrance

30 janv. 2010, 10:51

Bonjour, j'ai créé un forum avec 2 tbl sur sql, question-réponses, tout fonctionne tant que je n'introduis pas UNE APOSTROPHE ( ' );sql me renvoie alors un erreur: you have an error in you SQL syntax, check the manual......j'avais eu un problème avec les accents aigus ou autres, résolu avec charset ISO-8859-1. est-ce de la même source et comment résoudre?? D'avance merci William539

Mammouth du PHP | 2937 Messages

30 janv. 2010, 13:03

L'apostrophe (ou plutôt le guillemet simple) est un caractère sensible, puisque, comme en PHP, il est susceptible de délimiter une chaîne de caractères. C'est pourquoi, utilisé en tant que tel, il doit être échappé, comme suit :
SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu\'il convient d\'échapper';
ou
SELECT colonne FROM une_table WHERE colonne = 'Une chaîne comportant des guillemets qu''il convient d''échapper';
Voir le manuel MySQL pour plus de précisions.

Lorsque l'on construit une requête SQL en PHP susceptible de comporter des chaînes de caractères avec des guillemets, pour éviter une erreur de syntaxe (ainsi qu'une tentative d'attaque par injection SQL), on procède comme suit, au choix :
  • on utilise la fonction mysql_real_escape_string () ;
  • ou, si l'on utilise PDO :

william5398
Invité n'ayant pas de compte PHPfrance

30 janv. 2010, 15:18

Merci Victor, J'aimerais utiliser 'mysql_real_escape_string()' mais je ne vois pas ou l'introduire dans une requete tel que: "Insert into $tbname(intitule, nom, prenom) VALUES('$intitule', '$nom', '$prenom')" ; $result=mysql_query($sql) or die(mysql_error()); if(result){echo OK;}else{NONOK;}
william539

Mammouth du PHP | 2937 Messages

30 janv. 2010, 15:48

C'est très simple.
$sql = "INSERT INTO ".$tbname." (intitule, nom, prenom) VALUES ('".mysql_real_escape_string ($intitule)."', '".mysql_real_escape_string ($nom)."', '".mysql_real_escape_string ($prenom)."')";

william5398
Invité n'ayant pas de compte PHPfrance

30 janv. 2010, 16:01

je ne peux que me confondre en remerciements, ça fait 3 jours que je sèche, j'ai au moins appris qqchose grâce à toi. et ça fonctionne à merveille .Merci encore
william539

Yanou
Invité n'ayant pas de compte PHPfrance

29 janv. 2011, 16:37

Je présente mes plus sincères salutations au grand Victor, que dis-je, à l'immense Victor qui m'a enlevé une épine du pied en plus d'avoir sauvé mon couple, mon écran et mon clavier ! =D> =D> =D>