2011-05-25 61 views

回答

3

不。对PDO和MySQL的扩展没有任何安全上的好处(除了墨菲法则教给我们的东西,它适用于两者)。两者都会通过转义相同的字符来安全地提供输入。

然而,PDO具有其他优点:

  • 准备语句支持;
  • 面向对象的接口;
  • 数据访问抽象;和
  • 可生产更干净的代码,因为你可以一次

这些通常被认为是最重要的逃生多个值。

2

是的,如果您使用bindParam()方法而不是字符串连接与mysql_real_escape_string()

记住bindParam()外部数据要比记住用mysql_*自己逃脱每个值要容易得多。

此外,PDO只是更好的合作。

+0

那么,公正的更新'mysqli'扩展支持准备查询ala'bindParam'。不管'mysql_ *',但请注意。 – 2011-05-25 03:15:17

3

无需甚至bindParam,只是做

$stmt = $pdoConnection->prepare('SELECT foo FROM bar WHERE baz = :baz'); 
$stmt->execute(array(':baz' => 1)); 
foreach ($stmt as $row) { 
} 

那么容易。

+0

我通常也使用数组绑定方法。重要的是要记住,虽然这样做将所有数组值作为字符串类型传递给PDO。如果你绝对需要一个输入值是一个int或布尔值,你应该使用'bindParam'和适当的数据类型常量'PDO :: PARAM_INT,PDO :: PARAM_BOOL'等 – 2011-05-25 03:19:24