2010-07-29 4 views
1

Y a-t-il une raison d'utiliser l'une par rapport à l'autre en termes de vitesse et de sécurité? Merci!real_escape_string vs instructions préparées

+0

connexes: http://stackoverflow.com/questions/3101307/mysqli-prepared-statements-and-mysqli-real-escape-string –

Répondre

1

Vitesse:

  • Lorsque vous utilisez des paramètres bind vous pouvez réutiliser la même requête et plan de requête, en changeant simplement les paramètres. Lorsque vous générez une requête à partir de chaînes, la base de données doit analyser l'instruction.
  • Avec les paramètres de liaison, l'analyseur SQL a également moins de travail à faire. Les paramètres ne sont pas échappés, donc l'analyse est plus simple.

Sécurité:

  • À mon avis, il est beaucoup plus facile de se rappeler d'utiliser les paramètres que de se souvenir d'échapper à des chaînes.
+0

bien d'accord avec le point de sécurité. Il est si facile de passer à côté d'une chaîne, surtout quand il y a des valeurs que l'on peut espérer ne pas échapper comme des valeurs numériques. Il est beaucoup plus sûr et plus facile d'utiliser des déclarations préparées, et vous n'avez jamais à vous soucier d'oublier quoi que ce soit. De plus, il est tellement plus facile de lire une requête dans le code quand il n'est pas intercalé avec un tas d'opérateurs de concaténation. – Kibbee

Questions connexes