gpt4 book ai didi

php - 什么时候*不*使用准备好的语句?

转载 作者:IT老高 更新时间:2023-10-28 23:41:23 25 4
gpt4 key购买 nike

我正在重新设计一个使用最小数据库的 PHP 驱动的网站。原始版本使用“pseudo-prepared-statements”(执行引用和参数替换的 PHP 函数)来防止注入(inject)攻击并将数据库逻辑与页面逻辑分离。

用使用 PDO 和真实准备语句的对象替换这些临时函数似乎很自然,但是在阅读了它们之后,我不太确定。 PDO 似乎仍然是一个好主意,但准备好的语句的主要卖点之一是能够重用它们……我永远不会。这是我的设置:

  • 这些语句都非常简单。大多数都采用 SELECT foo,bar FROM baz WHERE quux = ? ORDER BY bar LIMIT 1。该批处理中最复杂的语句就是三个这样的选择与 UNION ALLs 连接在一起。
  • 每个页面点击最多执行一个语句,并且只执行一次。
  • 我处于托管环境中,因此对通过亲自进行任何“压力测试”来抨击他们的服务器持谨慎态度。

鉴于使用准备好的语句至少会使我正在进行的数据库往返次数增加一倍,我最好避免使用它们吗?我可以使用 PDO::MYSQL_ATTR_DIRECT_QUERY 来避免多次数据库访问的开销,同时保留参数化和注入(inject)防御的好处吗?或者,与执行我不应该担心的非准备好的查询相比,准备好的语句 API 使用的二进制调用是否表现得足够好?

编辑:

感谢所有好的建议,伙计们。这是我希望我可以将多个答案标记为“已接受”的地方——许多不同的观点。但最终,我必须给 rick他应得的……没有他的回答,即使在听从每个人的建议之后,我也会幸福地离开并做完全错误的事情。 :-)

它是模拟的准备好的语句!

最佳答案

今天的软件工程规则:如果它对你没有任何作用,就不要使用它。

关于php - 什么时候*不*使用准备好的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/535464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com