カテゴリー:
セキュリティ
閲覧数:884 配信日:2014-09-01 15:24
概要
・SQL文をREBMSが実行できる形に準備しておき、パラメータの部分だけを実行時に渡す方法
・処理速度を高めるための仕組みだが、SQLインジェクションを防ぐためにもよく使われる
PDO
// PDOの場合 - PHP 5.1から対応
$sql = "SELECT name, age, address FROM kaiin_m WHERE search_text = ? and private = 0";
$stmt = $pdo->prepare($sql);
$stmt->execute(array($_POST["search_text"]));
$result = $stmt->fetchAll();
mysqliエクステンション
$sql = "SELECT name, age, address FROM kaiin_m WHERE search_text = ? and private = 0";
$stmt = mysqli_prepare($link, $sql); // mysqli関数はPHP5以降で対応
mysqli_stmt_bind_param($stmt, "s", $_POST["search_text"]);
$result = mysqli_stmt_execute($stmt);
PEAR::DB
// PEAR:Bの場合
$sql = "SELECT name, age, address FROM kaiin_m WHERE search_text = ? and private = 0";
$stmt = $db->prepare($sql);
$result = $db->execute($stmt, array($_POST["search_text"]));
PostgreSQL
// PostgreSQLの場合 - PHP5から対応
$sql = "SELECT name, age, address FROM kaiin_m WHERE search_text = $1 and private = 0";
$stmt = pg_prepare($link, "my_query", $sql);
$result = pg_execute($link, "my_query", array($_POST["search_text"]));