【发布时间】:2014-06-04 17:49:28
【问题描述】:
根据我最近几个月对 PHP-PDO 的使用,我了解到您可以执行 PREPARE 语句,然后运行查询。事实上,如果我要在复杂的连接上选择 SELECT,改变 where 条件,重复次数,我可以看到它的用处。
或者,类似地,如果我想插入多条记录。
但是,如果我知道我只想运行一次语句,我不应该只执行查询吗?我基本上是在查询数据库两次。
【问题讨论】:
根据我最近几个月对 PHP-PDO 的使用,我了解到您可以执行 PREPARE 语句,然后运行查询。事实上,如果我要在复杂的连接上选择 SELECT,改变 where 条件,重复次数,我可以看到它的用处。
或者,类似地,如果我想插入多条记录。
但是,如果我知道我只想运行一次语句,我不应该只执行查询吗?我基本上是在查询数据库两次。
【问题讨论】:
这取决于您是否有任何输入需要转义以防止 sql 注入。
根据PDO::quote上的手册:
如果你使用这个函数来构建 SQL 语句,你就是 强烈推荐使用 PDO::prepare() 来准备 SQL 语句 使用绑定参数而不是使用 PDO::quote() 进行插值 用户输入到 SQL 语句中。带绑定的预处理语句 参数不仅更便携,更方便,不受 SQL 的影响 注入,但执行起来通常比插值快得多 查询,因为服务器端和客户端都可以缓存已编译的表单 查询。
【讨论】:
这里是基准测试:http://jnrbsn.com/2010/06/mysqli-vs-pdo-benchmarks
就减速而言,准备好的报表接近误差范围,因此在大多数情况下可以认为是微不足道的。
【讨论】: