Page 1 sur 1

probleme apostrophe dans requete sql

Posté : 05 mai 2008, 08:42
par moi
bonjour,
j'ai un petit souci, j'ai une requete qui fonctionne parfaitement, mais sauf lorsque j'ai des noms avec des apostrophes. Savez vous de quel manière je pourrai changer ma requete ?

Code : Tout sélectionner

$req = mysql_query("SELECT num_pers, excep FROM pers WHERE prenom_pers='$pre' and nom_pers='$nom'");
merci

Code : Tout sélectionner

Version du serveur: 5.0.17 Version de PHP: 5.2.0 CREATE TABLE `pers` ( `NUM_PERS` bigint(4) NOT NULL auto_increment, `EXCEP` tinyint(1) default NULL, PRIMARY KEY (`NUM_PERS`), ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16380 ;

Posté : 05 mai 2008, 10:09
par ouckileou
Modération :
moi, ce sujet a déjà été traité et des réponses ont été apportées.
Faire une petite recherche préalable n'est pas superflu.

Posté : 05 mai 2008, 10:11
par zeus
La solution la plus pérenne est d'utiliser la fonction PHP mysql_escape_string() avant de transmettre un paramètre à une requête.

De plus, il faut prendre quelques bonnes habitudes :
  • passer par une variable et ne pas mettre la requête directement dans mysql_query()
  • utiliser sprintf() plutôt que la concaténation
A partir de ton code, j'écrirais :
$str_requete = sprintf("SELECT 
							num_pers, excep
						FROM 
							pers
						WHERE 
							prenom_pers 	= '%s'
							AND nom_pers 	= '%s'",
						mysql_escape_string($pre),
						mysql_escape_string($nom));
$o_result = mysql_query($str_requete);