Forum Clubic

Erreur dans Syntaxe MYSQL

bjr a tous,

g un blème avec ma page de validation de mon formulaire,voici l’erreur qui s’affiche:

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
l’hebergeur utilise le PHP 4.0
je pense que c’est quand l’utilisateur entre le caractère apostrophe que cette erreur s’affiche.

Merci d’avance

Voici le code

<? mysql_connect('db.nnx.com','dataaude','EA2S-HHBVE') or die('Error, connection failed'); mysql_select_db('dataaude') or die('Error, database connexion failed'); function Newdate(){ $date = date("d-m-Y"); $dh= $date; return($dh);} function Newtime(){ $time = date("h:i:s"); $th= $time; return($th);} $nom; $prenom; $telephone; $societe; $email; $textarea; $sujet2; $time=newtime('$th'); $date=newdate('$dh'); /*$sql = 'INSERT INTO `Besoins` ( `nom` , `prenom` , `telephone` , `societe` , `email` , `sujet` , `textarea` , `date` , `heure` ) '; $sql .= 'VALUES ( '$nom', '$prenom', '$tel', '$societe', '$email', '$subject', '$message', '$date', '$time')';*/ $requete="INSERT INTO `Besoins` ( `nom` , `prenom` , `telephone` , `societe` , `email` , `sujet` , `textarea` , `date` , `heure` ) VALUES ('$nom', '$prenom', '$telephone', '$societe', '$email', '$sujet2', '$textarea', '$date', '$time')"; mysql_query( $requete ) or die(mysql_error()); ?>
lorsque dans la variable $textarea il ya un apostrophe.l'erreur précédamment défini s'affiche.

Fais une recherche sur “injection SQL” dans google, et renseigne toi sur la fonction mysql_real_escape_string.

Ton problème se situe là.

–>

$requete="INSERT INTO `Besoins` ( `nom` , `prenom` , `telephone` , `societe` , `email` , `sujet` , `textarea` , `date` , `heure` ) VALUES ('" . mysql_real_escape_string($nom) . "', '$prenom', '$telephone', '$societe', '$email', '$sujet2', '$textarea', '$date', '$time')";

Etc.

Merci je fait la recherche et je te tient informer après recherche

je le met mais il ne fonctionne tjrs pas

$requete="INSERT INTO `Besoins` ( `nom` , `prenom` , `telephone` , `societe` , `email` , `sujet` , `textarea` , `date` , `heure` ) VALUES ('$nom', '$prenom', '$telephone', '$societe', '$email', '$sujet2', '".addslashes($textarea)."', '$date', '$time')";

C’est normal, le fait qu’il y ai un ’ dans textarea va couper la chaine $requete. La fonction addslashes va ajouter des \ avant ces apostrophes. Il existe aussi la fonction stripslashes().
Edité le 10/10/2007 à 16:25

arrêtez d’utiliser addslashes, c’est une protection partielle; il est plus recommandé d’utiliser mysql_real_escape_string

La différence est clairement explicitée dans les définitions :
addslashes
mysql_real_escape_string

C’est exact