我正在对一个使用极简数据库的 PHP 驱动网站进行重新设计。原版本使用「伪预处理语句」(PHP 函数,执行引号和参数替换),以防止注入攻击并将数据库逻辑与页面逻辑分离。
似乎自然地用使用PDO和真实的准备语句的对象来替换这些特别的函数,但在了解了它们后,我不太确定了。PDO仍然是一个好主意,但是准备语句的一个主要卖点是能够重复使用它们…而我永远也不会。这是我的设置:
- The statements are all trivially simple. Most are in the form
SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1
. The most complex statement in the lot is simply three such selects joined together withUNION ALL
s. - Each page hit executes at most one statement and executes it only once.
- I m in a hosted environment and therefore leery of slamming their servers by doing any "stress tests" personally.
鉴于使用准备语句将至少使我进行的数据库往返次数增加一倍,我最好避免它们吗?我可以使用
编辑:
感谢大家提供的所有好建议。这是一个我希望能够标记多个答案为“被接受”的例子——有很多不同的观点。但最终,我还是要给Rick他应得的认可...如果没有他的答案,我会在遵循每个人的建议后,显然地做出完全错误的事情。 :-)
模拟预编译语句就是它!