[RESOLU] Reqûete préparée avec PDO

Petit nouveau ! | 2 Messages

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:

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); }
Je me demande si c'est sécure de procéder ainsi, qu'en pensez vous ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 oct. 2022, 17:19

Avec une requête préparée, le risque est très minime d'avoir de l'injection SQL, donc oui je pense que ça ne pose pas de problème.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

10 oct. 2022, 17:23

merci beaucoup ! je verrai si quelqu'un le déconseille. En attendant je reste comme ça