Utilisation d'instructions préparées dans CodeIgniter
Les instructions préparées offrent un niveau de sécurité et de performances non disponible avec les requêtes de concaténation de chaînes traditionnelles. Bien que CodeIgniter ne prenne pas directement en charge les instructions préparées, il prend en charge les liaisons de requêtes, qui obtiennent un effet similaire.
Dans cet article, nous montrons comment utiliser les liaisons de requêtes dans CodeIgniter :
<code class="php">$sql = "SELECT * FROM tbl_user WHERE uid = ? and activation_key = ?"; $query = $this->db->query($sql, array($uid, $activation_key)); </code>
Ce code remplit le même objectif que la tentative originale avec ":id" et ":key", mais il utilise à la place des espaces réservés sans nom. Les espaces réservés sans nom sont pris en charge par CodeIgniter, vous permettant de simplifier vos requêtes tout en maintenant un niveau de sécurité des données.
Il est important de noter qu'en utilisant "?" ou ":foo" n'indique pas une véritable fonctionnalité d'instruction préparée. Les instructions préparées nécessitent des fonctions préparer() et exécuter() distinctes, que CodeIgniter ne prend pas en charge.
Au lieu de cela, CodeIgniter utilise des liaisons de requête pour remplacer les espaces réservés par les données fournies. Cela offre des avantages similaires aux instructions préparées, notamment une protection contre les attaques par injection SQL.
Pour plus d'informations sur les liaisons de requêtes et pourquoi CodeIgniter ne prend pas directement en charge les instructions préparées, reportez-vous aux ressources répertoriées dans la réponse fournie ci-dessus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!