Les guillemets dans les requêtes SQL

Eléphant du PHP | 116 Messages

12 avr. 2010, 22:30

Bonjour,

J'ai un problème j'ai fais un formulaire pour envoyé des mails, avec ajout du contenu dans la base de donnée.

Ca fonctionne mais si l'ajout dans la base de donnée comporte des caractères speciaux comme ', la j'ai le droit à une erreur sql

J'ai essayé avec addslashes et realescapestring avant de faire ma requêtes, mais l'erreur persiste.
$text = "l'avion";
$text = addslashes($text);
// J'ajoute, erreur quand même
$text = "l'avion";
$text= $req -> real_escape_string($text);
// J'ajoute, ca échoue aussi.
Je ne dois pas employé les bonnes méthodes.

Si quelqu'un sais comment faire, merci d'avance.

ViPHP
ViPHP | 3607 Messages

12 avr. 2010, 22:57

Bonsoir,

Quel est ta méthode pour exécuter tes requêtes? fonctions mysql_*() ? mysqli_*() ? PDO ?
Si c'est PDO, méthode utilisée est $objectPDO->quote()

Bon sinon un peu plus de code serait bienvenu :)

Eléphant du PHP | 116 Messages

12 avr. 2010, 23:07

	$sql = "INSERT INTO $table_contact (id_contact,name,title,company,subject,message,tel,fax,mail) 
	  VALUES('','$name','$title','$company','$subject','$message','$tel','$fax','$mail')";
$req = mysql_query($sql) or die($sql_error.$sql.'<br>'.mysql_error()); 
Voici ma requêtes SQL, je connais pas 50 méthodes je connais que celle la :P
C'est pour une table MySQL

devlop78
Invité n'ayant pas de compte PHPfrance

13 avr. 2010, 01:29

Que dit le message d'erreur Mysql ? Peut-être que l'erreur vient d'ailleurs et quel est ton code avant ?

Eléphant du PHP | 116 Messages

13 avr. 2010, 05:58

Que dit le message d'erreur Mysql ? Peut-être que l'erreur vient d'ailleurs et quel est ton code avant ?
Voici l'erreur :
INSERT INTO contact (name,title,company,subject,message,tel,fax,mail) VALUES('Un nom','Un titre','Une compagnie','Un sujet','Ceci est le message du text area, je met un apostrophe à la fin du texte et je vais planté le script '','0123456789','0123456789','[email protected]')
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 '0123456789','0123456789','[email protected]')' at line 2
Voici ce qu'il y a avant :
$message = $_POST['message']; 
Rien de plus, j'ai essayé avec le addslashs sur $message mais ça n'a pas fonctionné :/

ViPHP
ViPHP | 3607 Messages

13 avr. 2010, 09:25

Bonjour,
Il faut utiliser mysql_real_escape_string() dans ton cas ;)

Eléphant du PHP | 116 Messages

13 avr. 2010, 11:01

Merci bien pour l'infos.
C'est effectivement ce que je recherchai.

devlop78
Invité n'ayant pas de compte PHPfrance

13 avr. 2010, 17:45

addslashes aurait dû fonctionner.mysql_real_escape n'est jamais qu'un addslashes avec soit disant l'échappement de \n.

Eléphant du PHP | 116 Messages

13 avr. 2010, 18:37

Vu l'unique utilité et la simplicité du addslashes(), je suis sur que ça aurai du marché.

Mais à vérifié mon code 50 fois, il n'y avais rien de gênant j'en suis sur.
Entre le moment ou j'envoi le post, en haut de page on récupère les post et ajoute à la base de donnée, rien de traité avant.
Vraiment bizarre.
Au moins ca dépanne, et merci pour la petite précision sur le real_escape_string