PHP のプリペアドステートメントテクニックの使い方

SQLインジェクション攻撃を防ぎ、データベースクエリのパフォーマンスを向上させる技術です。SQLクエリ文とデータを分離し、SQL文を先にデータベースに送信してコンパイルしておき、のちほどコンパイルされた文にデータをバインドして実行します。PHPでプリペアドステートメントを使用する手順:

  1. 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());
}
  1. プリペアドステートメントの準備:
$sql = "SELECT * FROM users WHERE username = :username";

$stmt = $pdo->prepare($sql);
  1. パラメーターをバインドする:
$username = "john.doe";

$stmt->bindParam(":username", $username, PDO::PARAM_STR);

または配列バインディングを使用する:

$params = array(":username" => "john.doe");

$stmt->execute($params);
  1. クエリを実行する。
$stmt->execute();
  1. 結果を得る
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

これにより、SQLクエリ ステートメントがデータから分離されるので、SQLインジェクション攻撃が防止されると共に、データベース クエリの性能も向上します。

bannerAds