5

MySQL/PHP でパラメータ化されたクエリを使用する方法の例を教えてください。

4

2 に答える 2

8

パラメーター化されたクエリは、本質的にすべての入力を抽象化するクエリです。これには、すべての入力を無害にする (つまり、有害なインジェクションが不可能になる) ことや、事前に解析およびコンパイルされているため、繰り返し使用すると高速になるなど、いくつかの良い副作用があります。純粋な 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"));
于 2009-12-12T17:21:30.610 に答える
4
PREPARE stmt_name FROM "SELECT name FROM Country WHERE code = ?";

SET @test_parm = "FIN";

EXECUTE stmt_name USING @test_parm;

ソース: MySQL 開発: プリペアド ステートメント

于 2009-12-12T17:14:58.167 に答える