参数化查询本质上是抽象出所有输入的查询。这具有几个良好的副作用,例如使所有输入无害(即不可能进行有害注入),并且由于它是预先分析和编译的,因此在重复使用时使其更快,因此引擎知道如何应用给定的输入。纯mysql中的一个示例是:
PREPARE qry FROM "INSERT INTO tbl VALUES (?)";
现在,该语句已编译并缓存,可以重复执行,而无需重新编译和解释它:
SET @var = "some input";EXECUTE qry USING @var;SET @var = "some other input";EXECUTE qry USING @var;
在PHP中使用时,通常是这样的(缩短的):
$stmt = prepare('INSERT INTO tbl VALUES(?)');execute($stmt, array("some input"));execute($stmt, array("some other input"));execute($stmt, array("some more input"));


