SQL注入好奇心

SQL injection curiosity

同学,

刚刚了解到,为了避免 SQL 注入,最好使用 prepare/execute 二重奏:

$pdo = new PDO ('mysql:host=something;port=something dbname=something','name','pswd');
$sql = "SELECT name FROM users WHERE email = :em AND password = :pw";
$stmt = $pdo -> prepare($sql);
$stmt -> execute (array());

而不是使用:

$stmt = $pdo -> query($sql);

问题是:

在什么情况下有人使用 query 代替,因为我们有一个非常快速的方法来保护自己免受 SQL 注入,有人使用查询方法吗?如果是,为什么?

几乎从不;你会知道你是否处于无法使用它的情况。

请注意,即使您正在即时生成查询,您仍应生成包含占位符的字符串和彼此独立的参数集。

我会在可以安全使用查询时使用query方法(它不是sql注入攻击的目标),例如:SELECT name FROM users