七十歳からの独習
オブジェクト指向 Work-2-2 PDOクラスでデータを取得(SELECT)prepare版
【ワークの目標】
MariaDB(MySQL)とPHPを使って、WEB上で動く仮想の販売管理システムを作ること。もちろん完成すればわが農園で利用することもできる。
何と、前回の投稿から2か月も経過してしまった。
少しどころではなく、かなり忘れかけている。
梅雨に入り、今日は大雨。デスクワークも一息つき(本当は沢山溜まっている)、菜園の作業はお休みなので、これまでの復習をしながら、ワークを行う。
前回は、INSERT(挿入)文を使って、店舗テーブルに店舗コード、店舗名をデータベースに追加する追加した。
今回は、前回のINSERTとほとんど同様に、トランザクション処理を伴う、UPDATE(更新)とDELETE(削除)を行う。


4-1【支店のデータの更新】sample4-1.php
- <?php
- // 修正
- // 変数の初期化
- $tenpo_code = "0006";
- $tenpo_name = "えびの支店";
- try {
- // DBへ接続
- $dbh = new PDO("mysql:host=localhost; dbname=sms; charset=utf8", 'root', '');
- //トランザクション開始
- $dbh->beginTransaction();
- // SQL作成
- $sql = "UPDATE tenpo SET tenpo_name = :tenpo_name WHERE tenpo_code = :tenpo_code";
- // SQL実行準備
- $res = $dbh->prepare($sql);
- //値をバインド
- $res->bindValue(':tenpo_code', $tenpo_code, PDO::PARAM_STR);
- $res->bindValue(':tenpo_name', $tenpo_name, PDO::PARAM_STR);
- // SQL実行
- $res->execute();
- $dbh->commit();
- echo "店舗コード ".$tenpo_code." の店舗名を ".$tenpo_name." に変更しました。<br>";
- }
- //エラー処理
- catch(PDOException $e) {
- echo $e->getMessage();
- die();
- }
- // 接続を閉じる
- $dbh = null;
- ?>
【注意】
9行目の
$dbh = new PDO(“mysql:host=localhost; dbname=sms; charset=utf8″, ‘root’, ”);
は、セキュリティ上の理由でソース内に記述すべきではない。
PHPのソースは外部からは基本的には見えないが、何らかの原因で見られてしまう可能性も否定できない。外部から見られたくない部分はhtdocsフォルダ外に記述し、sample1-3.phpで記述した方法で読み込むようにする。
もちろん、ログイン名とパスワードも適正に設定する。
【実行結果】
店舗コード 0006 の店舗名を えびの支店 に変更しました。
tenpoテーブルの中身を確認すると確かにデータが、「池島支店」から「えびの支店」に更新されている。


続けて、DELETE(削除)処理
5-1【支店のデータの削除】sample5-1.php
- <?php
- // 削除
- // 変数の初期化
- $tenpo_code = "0006";
- try {
- // DBへ接続
- $dbh = new PDO("mysql:host=localhost; dbname=sms; charset=utf8", 'root', '');
- //トランザクション開始
- $dbh->beginTransaction();
- // SQL作成
- $sql = "DELETE FROM tenpo WHERE tenpo_code = :tenpo_code";
- // SQL実行準備
- $res = $dbh->prepare($sql);
- //値をバインド
- $res->bindValue(':tenpo_code', $tenpo_code, PDO::PARAM_STR);
- // SQL実行
- $res->execute();
- $dbh->commit();
- echo "店舗コード ".$tenpo_code." を削除しました。<br>";
- }
- //エラー処理
- catch(PDOException $e) {
- echo $e->getMessage();
- die();
- }
- // 接続を閉じる
- $dbh = null;
- ?>
【実行結果】
店舗コード 0006 を削除しました。
tenpoテーブルの中身を確認すると確かにデータが、「0006 池島支店」が削除されている更新されている。


これで、クラスを使ってデータベースの操作をすることができるようになった。
あとは、これらの操作の組み合わせで販売管理システムは構築可能だ。
とりあえず、ここで一旦ワークは終了する。