10-3. PHPからデータベースを操作する③SQL文の発行
今日はwebページ上からデータベースを操作するための準備として、SQL文をPHP内から発行して結果を画面に表示するまでの手順と、SQL文の組み立て方について勉強します。
1-1. Webページからデータベースを操作する手順
データベースを操作して結果を表示する手順は以下です。
①フォームからの送信(POST)またはリンクからの送信(GET)
↓
②データの受け取り
↓
③SQL文の組み立て
↓
④SQL文の発行
↓
⑤結果の受け取り
↓
⑥結果の表示
1-2. SQL分作成に必要なデータ
データを受け取るとそれを使ってデータベースの操作に合わせてSQL文を作成します。データベース上の操作には、挿入、検索、更新、削除などがありますが、どの操作を行うにもそれぞれ必要なデータがあります。
操作 | 必要なデータ |
---|---|
挿入 | データとカラム位置 |
検索 | 検索条件に使用するデータ |
更新 | 更新後のデータとその条件 |
削除 | 削除条件に使用するデータ |
1-3. ヒアドキュメント構文
SQL文は変数に格納します。
SQL文が短い場合は、簡単に変数に格納するだけでいいのですが、処理によっては文が長くなってしまうこともあり、そのときに「ヒアドキュメント構文」を使うと見やすく間違いが少なくなります。
1-4. プリペアドステートメント
安全にSQLを実行するためにプリペアドステートメントという機能を利用します。
プリペアドステートメントは、SQL文のテンプレートを先に準備して、値とSQL部分を明確に分けることで安全に担保します。
SQL文と外部の値を区別できるように、値の部分にプレースホルダと呼ばれる識別子を置きます。
プレースホルダには2種類あり、「:名前」形式の名前付きプレースホルダと、「?」プレースホルダから選択できます。
①「:名前」形式の名前付きプレースホルダ
$sql = "INSERT INTO member (last_name,first_name,age)
VALUES(:last_name, :first_name, :age)";
$stmh = $pdo->prepare($sql);
$stmh ->bindValue(':last_name',
$_POST['last_name']);
$stmh ->bindValue(':first_name',
$_POST['first_name']);
$stmh ->bindValue(':age',
$_POST['age']);
$stmh->execute();
?>
②「?」プレースホルダ
いじょー
次はそれっぽい感じをやるのでちょっとたのしみ