我想知道在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.'';
答案 0 :(得分:5)
只是一些手册。
http://php.net/manual/en/pdo.quote.php
如果您正在使用此函数来构建SQL语句,那么您就是 强烈建议使用PDO :: prepare()来准备SQL语句 使用绑定参数而不是使用PDO :: quote()进行插值 用户输入到SQL语句中。带有约束的预备语句 参数不仅更便携,更方便,不受SQL的影响 注入,但通常比插值快得多 查询,因为服务器端和客户端都可以缓存已编译的表单 查询。
另外
警告安全性:默认字符集
必须在服务器级别或内部设置字符集 它的数据库连接本身(取决于驱动程序) 影响PDO :: quote()。有关更多信息,请参阅特定于驱动程序 信息。