Reqûete préparée avec PDO
Posté : 10 oct. 2022, 17:03
Bonjour
J'ai un formulaire de recherche sur une page, qui une fois envoyé execute une requête SQL SELECT, préparée grâce à PDO, dans laquelle je passe plusieurs valeurs avec bindValue().
Jusqu'à maintenant, la recherche par chaîne de caractère ne renvoyait rien si on entrait des caractères spéciaux, par exemple "&", alors qu'il y avait bien une entrée en base avec ce caractère. Il se trouve que je recevais le caractère encodé en entité html en le récupèrant via le $_GET['search'] (je n'ai pas écrit le code d'origine, je suppose que c'est à ce moment que le '&' devient l'html_entity &);
Pour parer à ce souci, voici ma solution:
Je me demande si c'est sécure de procéder ainsi, qu'en pensez vous ?
J'ai un formulaire de recherche sur une page, qui une fois envoyé execute une requête SQL SELECT, préparée grâce à PDO, dans laquelle je passe plusieurs valeurs avec bindValue().
Jusqu'à maintenant, la recherche par chaîne de caractère ne renvoyait rien si on entrait des caractères spéciaux, par exemple "&", alors qu'il y avait bien une entrée en base avec ce caractère. Il se trouve que je recevais le caractère encodé en entité html en le récupèrant via le $_GET['search'] (je n'ai pas écrit le code d'origine, je suppose que c'est à ce moment que le '&' devient l'html_entity &);
Pour parer à ce souci, voici ma solution:
Code : Tout sélectionner
if (isset($filters['app_name']) && strlen($filters['app_name']) > 0) {
$app_name = html_entity_decode($filters['app_name']) ;
$req->bindValue(':name_app1', '%' . $app_name . '%', \PDO::PARAM_STR);
$req->bindValue(':name_app2', '%' . $app_name. '%', \PDO::PARAM_STR);
}