2010-09-04 8 views
1

Travailler avec MySQL ces derniers temps, de PHP, je me demande à ce sujet:Les transactions effectuées avec mysql_real_escape_string

  • Quel est l'impact sur les performances en utilisant mysql_real_escape_string() plusieurs fois à un script?
  • Vaut-il la peine d'essayer de réduire le nombre d'appels à cette fonction pour un script donné?
  • Détermine-t-il le jeu de caractères de la connexion à chaque appel ou cette valeur est-elle mise en cache?

Si un scénario est nécessaire, je pense à PHP, et la distinction entre texte et des chiffres, où les numéros (en utilisant intval(), floatval() ou moulages directs) peuvent être inclus sans appel.

Répondre

4

Ne soyez pas penny-sage et livre-fou.

Vos questions sont dans le domaine des micro-optimisations. La création d'un index nécessaire ou la mise en cache de certains résultats de requête aura un avantage de plus d'un ordre de grandeur que de s'inquiéter de l'impact sur les performances de quelques appels à mysql_real_escape_string(). A propos, le typage avec (int) $variable est légèrement plus rapide que d'appeler intval($variable). Mais cela aussi serait une micro-optimisation.

2

Si vous devez échapper à l'entrée de l'utilisateur avant l'entrée de la base de données, vous devrez utiliser mysql_real_escape_string() ... ne vous inquiétez pas trop de l'optimisation prématurée.

Vous pouvez également rechercher dans les instructions préparées ce qui vous évitera d'appeler cette fonction plusieurs fois - et il est plus sûr car il sépare la logique SQL de l'entrée utilisateur.

Questions connexes