PHP のプリペアドステートメントテクニックの使い方
SQLインジェクション攻撃を防ぎ、データベースクエリのパフォーマンスを向上させる技術です。SQLクエリ文とデータを分離し、SQL文を先にデータベースに送信してコンパイルしておき、のちほどコンパイルされた文にデータをバインドして実行します。PHPでプリペアドステートメントを使用する手順:
- PDOあるいはmysqli 拡張機能を使用してデータベースに接続します。
// 使用PDO连接到数据库
$dsn = "mysql:host=localhost;dbname=mydatabase";
$username = "username";
$password = "password";
try {
$pdo = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
- プリペアドステートメントの準備:
$sql = "SELECT * FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
- パラメーターをバインドする:
$username = "john.doe";
$stmt->bindParam(":username", $username, PDO::PARAM_STR);
または配列バインディングを使用する:
$params = array(":username" => "john.doe");
$stmt->execute($params);
- クエリを実行する。
$stmt->execute();
- 結果を得る
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
これにより、SQLクエリ ステートメントがデータから分離されるので、SQLインジェクション攻撃が防止されると共に、データベース クエリの性能も向上します。