一尘不染

PDO-> query()和PDO-> exec()之间的区别

mysql

让对PDO的引用等于PDO对象,而不是PDO本身-

在这里看到同时存在PDO->query()PDO->exec()。在被链接的页面,似乎PDO->query();是用于SELECT报表ONLY,并PDO->exec()用于UPDATEINSERTDELETE语句。现在,我是全新的,以PDO,所以我不知道什么是使用它的条款上会
相当尚未 ,所以我将不胜感激为什么要使用不同的方法解释,为什么有不同的方法。


阅读 463

收藏
2020-05-17

共1个答案

一尘不染

尽管在理论上有任何差异,但无论如何都不应使用这些功能-因此,无需担心。

使用PDO的唯一原因是 对准备好的语句的支持 ,但是这些功能都没有提供它。因此,不应使用它们。

prepare()/execute()改为使用它, 尤其是 用于UPDATE,INSERT,DELETE语句。

请注意,尽管准备好的声明被广泛宣传为一种安全措施,但这仅仅是为了引起人们的注意。但是它们的 真正 目的是 正确的查询格式
。这也为您提供了安全性-格式正确的查询也无法注入-就像副作用一样。但是,再次强调-格式化是主要目标,因为即使格式正确,即使是无辜的数据也可能导致查询错误。

编辑:请注意,execute()仅返回TRUEFALSE表示操作成功。对于其他信息,例如受受影响的记录数,提供了UPDATE方法rowCount()。请参阅文档

2020-05-17