PHP : Comment choisir entre $mysqli‑>prepare() et $mysqli‑>query() ?

Plusieurs techniques permettent d'effectuer des requêtes MySQL avec PHP. Prenons l'extension MySQLi. Elle permet notamment d'effectuer une requête à l'aide de $mysqli‑>query() ou, pour plus de sécurité, à l'aide de $mysqli‑>prepare(). Mais si $mysqli‑>prepare() est plus sécuritaire, doit-on pour autant éviter d'utiliser $mysqli‑>query() ?

▼Publicité

L'utilisation des requêtes préparées, avec $mysqli->prepare(), est définitivement plus sécuritaire car elle permet de mieux se protéger contre les injections SQL. Cependant, elle demande plus d'étapes avant que la requête soit effectivement effectuée et ce, autant en terme de lignes de code à ajouter à votre programme qu'en lignes de codes exécutées par la fonction.

De façon générale, on utilisera les requêtes préparées seulement lorsque la requête contient des paramètres (des variables), peu importe la provenance de ces paramètres.

Ex :

PHP

$requete = "SELECT client_id, client_prenom, client_nomfamille FROM client ORDER BY client_nomfamille, client_prenom";

$resultat = $mysqli‑>query($requete);     // inutile d'utiliser les requêtes préparées puisqu'il n'y a aucun paramètre dans la requête

...

PHP

$requete = "SELECT client_prenom, client_nomfamille FROM client WHERE client_id=?";

$stmt = $mysqli‑>prepare($requete);   // on utiliser une requête préparée puisque la requête contient un paramètre

// ici, il y aura plusieurs lignes de code pour travailler avec les résultats de la requête

// ex : bind_param, execute, store_result, bind_result, fetch, close

...

Pour plus d'information

« Extension mysqli ». PHP. http://php.net/manual/fr/book.mysqli.php

« Les requêtes préparées ». PHP. http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories