リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

10-3. PHPからデータベースを操作する③SQL文の発行

今日はwebページ上からデータベースを操作するための準備として、SQL文をPHP内から発行して結果を画面に表示するまでの手順と、SQL文の組み立て方について勉強します。

1-1. Webページからデータベースを操作する手順


データベースを操作して結果を表示する手順は以下です。
①フォームからの送信(POST)またはリンクからの送信(GET)

②データの受け取り

SQL文の組み立て

SQL文の発行

⑤結果の受け取り

⑥結果の表示

1-2. SQL分作成に必要なデータ


データを受け取るとそれを使ってデータベースの操作に合わせてSQL文を作成します。データベース上の操作には、挿入、検索、更新、削除などがありますが、どの操作を行うにもそれぞれ必要なデータがあります。

操作 必要なデータ
挿入 データとカラム位置
検索 検索条件に使用するデータ
更新 更新後のデータとその条件
削除 削除条件に使用するデータ


1-3. ヒアドキュメント構文


SQL文は変数に格納します。
SQL文が短い場合は、簡単に変数に格納するだけでいいのですが、処理によっては文が長くなってしまうこともあり、そのときに「ヒアドキュメント構文」を使うと見やすく間違いが少なくなります。


$sql = <


1-4. プリペアドステートメント


安全にSQLを実行するためにプリペアドステートメントという機能を利用します。
プリペアドステートメントは、SQL文のテンプレートを先に準備して、値とSQL部分を明確に分けることで安全に担保します。
SQL文と外部の値を区別できるように、値の部分にプレースホルダと呼ばれる識別子を置きます。
プレースホルダには2種類あり、「:名前」形式の名前付きプレースホルダと、「?」プレースホルダから選択できます。

①「:名前」形式の名前付きプレースホルダ

<?php
$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();
?>



②「?」プレースホルダ

<?php
$sql = "INSERT INTO member (last_name,first_name,age)
VALUES(?, ?, ?)";
$stmh = $pdo->prepare($sql);
$stmh ->bindValue(1, $_POST['last_name']);
$stmh ->bindValue(2, $_POST['first_name']);
$stmh ->bindValue(3, $_POST['age']);
$stmh->execute();
?>

いじょー

次はそれっぽい感じをやるのでちょっとたのしみ