Je suis re-engineering PHP driven web site qui utilise un minimum de base de données. La version originale utilisés "pseudo-préparé-états" (fonctions PHP qui ne citant et le paramètre de remplacement) pour éviter les attaques par injection et à la base de données distincte de la logique à partir de la page logique.
Il semblait naturel pour remplacer ces fonctions ad-hoc avec un objet qui utilise PDO et réel déclarations préparées à l'avance, mais après avoir fait ma lecture sur eux, je ne suis pas si sûr. AOP semble encore comme une grande idée, mais l'un des principaux points de vente de déclarations préparées à l'avance, c'est de pouvoir les réutiliser... je ne le sera jamais. Voici ma configuration:
- Les états sont tous trivialement simple. La plupart sont sous la forme
SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1
. Le plus complexe de la déclaration dans le lot est tout simplement trois sélectionne joints avec d'UNION ALL
s. - Chaque page a frappé exécute au plus une instruction et l'exécute qu'une seule fois.
- Je suis dans un environnement hébergé, et donc réticent à l'idée de le claquement de leurs serveurs en faisant une "stress tests" personnellement.
Étant donné que l'utilisation des requêtes préparées seront, au minimum, doubler le nombre de base de données allers-retours, je suis en train de faire, suis-je mieux de les éviter? Puis-je utiliser PDO::MYSQL_ATTR_DIRECT_QUERY
afin d'éviter la surcharge de plusieurs voyages de base de données, tout en conservant le bénéfice de paramétrisation et l'injection de la défense? Ou de faire les appels binaires utilisés par l'instruction préparée API effectuer assez bien par rapport à l'exécution de non-requêtes préparées que je ne devrais pas m'en inquiéter?
EDIT:
Merci pour tous ces bons conseils, des gens. C'est celui où je souhaite que je pourrais cocher plus d'une réponse comme "accepté" - beaucoup de points de vue différents. En fin de compte, cependant, je dois donner rick son dû... sans sa réponse, j'aurais béatement parti et fait l'complètement Mauvaise Chose, même après la suite de chacun des conseils. :-)
Des émules déclarations préparées à l'avance, il est!