PDOとは
PDO(PHP Data Objects)とはデータベースにアクセスするための拡張モジュール、クラスのことです。
PDOを使うことによって、異なる種類のデータベースに対して一貫した方法でアクセスすることが可能になります。
例:MySQL,PostgreSQL,SQLite
PDOはSQLインジェクションの対策になる
PDOの特徴としてSQLインジェクションを防ぐことができます。
なぜPDOを使うことでSQLインジェクションの対策になるのかよくわからなかったので調べてみました。
PDOを使ったコード例
$pdo = db_connect();
try{
$sql = 'select * from users where name = :name AND password = :passowrd';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':password', $password);
$stmt->execute();
}catch(PDOException $e){
echo 'エラー:', $e->getMessage();
die();
}
スケープホルダーを使用しているため
PDOではSQLを実行する際にプレースホルダーを使用しています。
これによって外部からの入力を直接SQLに埋め込むことなくクエリを実行することができます。
$sql = 'select * from users where name = :name AND password = :passowrd';
$stmt = $pdo->prepare($sql);
プレースホルダーとは:name
:password
の部分で一時的に仮に入れておく値のことを指します。
エスケープ処理をしてくれるため
SQLインジェクションの対策といえばエスケープ処理ですが、bindParam()がやってくれてるんですね。
$stmt->bindParam(':name', $name);
$stmt->bindParam(':password', $password);
まとめ
便利!!