【发布时间】:2014-11-10 17:07:42
【问题描述】:
我使用 PDO 连接到我的数据库,但对于 UPDATE、DELETE 和 INSERT、PDO::exec 或 PDO::excute,我不知道哪种方法比另一种更好。 我应该使用哪个?
【问题讨论】:
-
它们非常不同。如果你需要像
DELETE FROM tbl WHERE col = :value这样的动态参数,你需要使用prepare()/bindParam()/execute()。exec()的目的是最简单的静态查询,例如DELETE FROM tbl -
没有看到您对
INSERT,UPDATE,DELETE使用什么样的查询,我的猜测是您应该使用prepare()/execute(),因为大多数现代应用程序都必须根据输入的值执行这些语句用户。 -
返回值有什么区别?如果Update,Insert,Delete没有错误,哪一个比较好?
-
那是in the docs。如果您只需要知道有多少行受到影响,这就是
exec()返回的内容。但是对于 any 用户输入,建议您使用参数占位符prepare()/execute()。然后你需要在执行的语句上调用$stmt->affectedRows()。另请参阅 this question 解决exec()和query()之间的差异。。 -
我投票决定将此问题作为题外话结束,因为它在问汽车或奶牛哪个更好。