引用vs准备和执行

时间:2014-09-23 08:08:38

标签: php pdo

我想知道在PDO上使用哪种方式,是引用还是准备和执行,哪一种更安全,更安全?

准备并执行:

$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));

引用:

$param1 = $conn->quote($param1); 
$param2 = $conn->quote($param2);

$sth = 'SELECT name, colour, calories
FROM fruit
WHERE calories <  '.$param1.' AND colour = '.$param2.'';

1 个答案:

答案 0 :(得分:5)

只是一些手册。

http://php.net/manual/en/pdo.quote.php

  

如果您正在使用此函数来构建SQL语句,那么您就是   强烈建议使用PDO :: prepare()来准备SQL语句   使用绑定参数而不是使用PDO :: quote()进行插值   用户输入到SQL语句中。带有约束的预备语句   参数不仅更便携,更方便,不受SQL的影响   注入,但通常比插值快得多   查询,因为服务器端和客户端都可以缓存已编译的表单   查询。

另外

  

警告安全性:默认字符集

     

必须在服务器级别或内部设置字符集   它的数据库连接本身(取决于驱动程序)   影响PDO :: quote()。有关更多信息,请参阅特定于驱动程序   信息。