requete sql + apostrophe dans critere de filtre

Eléphant du PHP | 186 Messages

12 avr. 2007, 10:47

Bonjour à tous!

Je rencontre quelques difficultés à faire fonctionner une requete sql.

En fait, sur une page qui affiche un evenement sportif par exemple, j'affiche le nom de l'organisateur de cet evenement.
A partir de ce nom, je fais une requete qui va me permettre de savoir si cet organisateur a une fiche propre enregistrée sur la base de données.
$query_existe= "SELECT etab_id, nom_etab FROM tbl_etab WHERE nom_etab=".$row_rs_fiche_even['organisateur_even'];
$existe = mysql_query($query_existe, $conn_develop) or die(mysql_error());
$row_existe = mysql_fetch_assoc($existe);
Si la requete renvoi un résultat, je transforme le nom de l'organisateur en lien vers sa fiche sinon je laisse le nom tel quel:
<tr><td width="520px" height="25px">
<b>Organisateur : </b> 
<?php if($row_existe['etab_id']!= '') {
echo '<a href="fiche-association-sport.php?num_assoc_sport='.$row_existe['etab_id'].'">'.$row_rs_fiche_even['organisateur_even'].'</a>';
} else { 
echo $row_rs_fiche_even['organisateur_even'];} ?></td></tr>
Le problème, c'est que j'ai fait le test avec un nom d'organisateur comportant une apostrophe à savoir: Pied dans l'eau. et voila l'erreur qui se produit:

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 'dans l'eau' at line 1

J'ai cherché du coté des magic quote mais j'avoue que je me suis un peu perdu. Je n'ai que magic_quote_gpc d'activé actuellement. D'ailleurs si je le désactivait, mes formulaires d'envoi des données ne fonctionne plus.

Si quelqu'un peut m'aider, ce serait vraiment sympa.

ViPHP
ViPHP | 3607 Messages

12 avr. 2007, 11:03

essaye comme ceci:
$query_existe= "SELECT etab_id, nom_etab FROM tbl_etab WHERE nom_etab=".mysql_real_escape_string($row_rs_fiche_even['organisateur_even']); 

Eléphant du PHP | 186 Messages

12 avr. 2007, 11:11

J'ai testé ta solution jojolapine mais ca ne marche pas.
Ca m'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 'dans l\'eau' at line 1
Comme tu pourras le voir ca m'a rajouté un antislash

ViPHP
ViPHP | 3607 Messages

12 avr. 2007, 11:13

fait un
echo $query_existe;
pour voir à quoi ressemble ta requête

edit: il manque des apostrophes autour du nom...
$query_existe= "SELECT etab_id, nom_etab FROM tbl_etab WHERE nom_etab='".mysql_real_escape_string($row_rs_fiche_even['organisateur_even'])."'"; 

Eléphant du PHP | 186 Messages

12 avr. 2007, 11:37

Je m'incline.
Effectivement, avec cette forme ci de requete, ca semble fonctionner:
$query_existe= "SELECT etab_id, nom_etab FROM tbl_etab WHERE nom_etab='".mysql_real_escape_string($row_rs_fiche_even['organisateur_even'])."'";
C'est comme ca que je les écrit normallement mais j'avais changé l'écriture pour tenter de résoudre mon problème.

Merci à toi jojolapine pour tes réponses et ta solution.

J'ai lu quelques articles et posts sur l'utilisation ou non des magic quote gpc et je voulais savoir ce que tu pouvais me conseiller.
Comme je l'ai di avant, j'utilise le magic quote gpc, puisqu'il était activé par défaut et si je l'enlève, l'envoi de mes données via mes formulaires ne semble plus fonctionner et plusieurs dizaines de mes pages fonctionnent avec ce système.
Que me conseille tu alors?