probleme apostrophe dans requete sql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme apostrophe dans requete sql

par zeus » 05 mai 2008, 10:11

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);

par ouckileou » 05 mai 2008, 10:09

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.

probleme apostrophe dans requete sql

par moi » 05 mai 2008, 08:42

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 ;