PDOの接続方法
僕はmysqliに比べて、分かりづらかったので、PDOの接続の仕方を書いてみました。
<?php
try {
$pdo = new PDO("mysql:dbname=データベース名; host=localhost; charset=utf8mb4", "ユーザー名", "パスワード");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "接続完了";
} catch (PDOException $e) {
exit();
echo "接続失敗";
}
?>
プリペアドステートメントについて
プリペアドステートメントって、初めは分かりづらいですよね。
プリペアドステートメントとは、SQL文を最初に用意しておいて、その後はクエリ内のパラメータの値だけを変更してクエリを実行できる機能のことです。
この機能を利用することでクエリの解析やコンパイル等にかかる時間は最初の一回だけで良くなり、より高速に実行することができます。
また、SQLインジェクション対策に必要なパラメータのエスケープ処理も自動で行ってくれるため、安全かつ効率の良い開発が出来ます。
プリペアドステートメントを利用してクエリを実行する流れ
PDOオブジェクトの作成
↓
prepareメソッドでSQL文をセット
↓
bindValue or bindParamでパラメータに値をセット
↓
executeメソッドでクエリを実行
↓
fetch or fetchAllメソッドで結果を配列で取得
INSERTだとこんな感じで使います。
$stmt = $pdo -> prepare("INSERT INTO blog (title, text) VALUES (:title, :text)");
$stmt->bindParam(":title", $_POST['title'], PDO::PARAM_STR);
$stmt->bindParam(":text", $_POST['text'], PDO::PARAM_STR);
$stmt->execute();
参考にしたサイト
PDO prepare プリペアドステートメントの使い方