参数化查询的示例

时间:2009-12-12 17:02:03

标签: php mysql parameterized-query

有人能举例说明如何使用MySQL / PHP参数化查询吗?

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:4)

PREPARE stmt_name FROM "SELECT name FROM Country WHERE code = ?";

SET @test_parm = "FIN";

EXECUTE stmt_name USING @test_parm;

来源:MySQL Dev: Prepared Statements