一尘不染

参数化查询的示例

mysql

关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。


想改善这个问题吗? 更新问题,使其成为Stack Overflow
的主题

6年前关闭。

谁能给我示例如何在MySQL / PHP中使用参数化查询的例子?


阅读 475

收藏
2020-05-17

共1个答案

一尘不染

参数化查询本质上是抽象出所有输入的查询。这具有几个良好的副作用,例如使所有输入无害(即不可能进行有害注入),并且由于它是预先分析和编译的,因此在重复使用时使其更快,因此引擎知道如何应用给定的输入。纯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"));
2020-05-17