これは、パラメーターを手動で引用する必要をなくすことで、SQL インジェクション攻撃を防ぐのに役立つことを意味します。
変数を sql に配置する代わりに、ステートメントの実行時に実際の値に置き換えられる名前付きまたは疑問符マーカーを使用します。
PHP マニュアルのPDOの定義:
「PHP Data Objects (PDO) 拡張機能は、PHP でデータベースにアクセスするための軽量で一貫したインターフェイスを定義します。」
PDOおよびPDO::prepareの php マニュアルを参照してください。
名前付きマーカーを使用した準備済みステートメントの例:
<?php
$pdo = new PDO('pgsql:dbname=example;user=me;password=pass;host=localhost;port=5432');
$sql = "SELECT username, password
FROM users
WHERE username = :username
AND password = :pass";
$sth = $pdo->prepare($sql);
$sth->execute(array(':username' => $_POST['username'], ':pass' => $_POST['password']));
$result = $sth->fetchAll();
疑問符マーカーを含む準備済みステートメントの例:
<?php
$pdo = new PDO('pgsql:dbname=example;user=me;password=pass;host=localhost;port=5432');
$sql = "SELECT username, password
FROM users
WHERE username = ?
AND password = ?";
$sth = $pdo->prepare($sql);
$sth->execute(array($_POST['username'], $_POST['password']));
$result = $sth->fetchAll();