使用PDO :: query与mysql_query有什么安全性好处吗?

时间:2011-08-15 19:24:22

标签: php pdo mysqli

我正在寻找重构一些遗留的PHP代码,我知道PDO通过添加预准备语句等更安全,但我想知道使用PDO::query()方法是否有任何安全性方面的好处与mysql_query()方法相比。有吗?

3 个答案:

答案 0 :(得分:6)

如果没有PDO或mysql_ *中的错误,数据库查询的安全问题取决于正在运行的查询,而不是用于连接数据库的内容。

如果使用userdata创建不安全的查询并使用PDO::query()执行它,则与mysql_query()一样不安全。同样,如果您有安全查询,则使用PDO::query()运行该查询实际上与mysql_query()相同。

答案 1 :(得分:1)

不,但如果您使用PDO准备的语句而不是PDO:query(),那么您将完全不受注入攻击,因为它会为您转义变量。

PDO还有其他优于mysql函数的好处......

prepared statements
transactions
ability to switch drivers
can get result rows as objects
etc

答案 2 :(得分:0)

您可以在用户输入的PDO prepeared语句中连接字符串,因此它不会以任何方式更安全。 预先准备的声明也有一些缺点。例如,您无法创建简单查询,其中U使用可变数据量,例如:

WHERE id IN (1,2,5,7,9,23)

如果你知道你只使用MySQL,我建议你选择mysqli而不是PDO。不需要不必要的抽象层。