Caractères d'échappement et mySQL

Petit nouveau ! | 5 Messages

15 sept. 2009, 15:37

Bonjour à tous,

je suis débutant en php et je me heurte à un problème simple mais que je n'arrive pas à résoudre.
Voici un bout de mon code et je vous expose le problème ensuite :

$nom = 'l'oiseau'
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('immo_base', $base) ;
mysql_query("SET NAMES UTF8");
mysql_query("UPDATE liste_maisons SET photo_1='$nom' WHERE numero = 1 "); 
J'ai une base de données mySQL appelée immo_base.
En fait le code fonctionne mais le contenu de la variable $nom ne veut pas s'inscrire dans ma base mySQL.
Si j'inscris 'un oiseau', cela va s'inscrire dans la base mais si j'inscris 'l'oiseau', rien ne s'inscrit.
Le problème est donc lié à l'apostrophe que je n'arrive pas à échapper.
J'ai essayé l'antislash comme caractère d'échappement mais l'antislash ne fonctionne pas.
Quelqu'un peut-il m'aider?

Merci à tous.
J'en conclus donc que le problème vient du caractère du caractère d'échappement à utiliser

Mammouth du PHP | 991 Messages

15 sept. 2009, 16:00

regarde du coté de la fonction php mysql_real_escape_string()

bye hawk
DevOps, Symfony4, Hoa

Petit nouveau ! | 5 Messages

15 sept. 2009, 16:54

Merci mais je ne vois pas comment l'utiliser.
Où dois-je insérer ça dans mon code et comment?

Mammouth du PHP | 991 Messages

15 sept. 2009, 17:02

Comme ceci :
mysql_query("UPDATE liste_maisons SET photo_1='".mysql_real_escape_string($nom)."' WHERE numero = 1 "); 
Après tu dois faire :
$nom = 'l\'oiseau';

Bye Hawk
DevOps, Symfony4, Hoa

Petit nouveau ! | 5 Messages

15 sept. 2009, 17:17

Ok, ça fonctionne.

Merci beaucoup, je commençais à désespérer.

Encore merci.

Bye.

ViPHP
ViPHP | 2291 Messages

15 sept. 2009, 17:19

Salut,

La fonction mysql_real_escape_string() ajoute automatiquement un / (slash) aux caractères spéciaux.
exemple dans ton cas le mot l'oiseau serat enregistrer l\'oiseau.
De plus tu dois prendre comme habitude de toujours utiliser cette fonction quand tu enregistre des données en base.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.