コンテンツへスキップ

七十歳からの独習

オブジェクト指向 Work-2-2 PDOクラスでデータを取得(SELECT)prepare版

【ワークの目標】
MariaDB(MySQL)とPHPを使って、WEB上で動く仮想の販売管理システムを作ること。もちろん完成すればわが農園で利用することもできる。

何と、前回の投稿から2か月も経過してしまった。

少しどころではなく、かなり忘れかけている。

梅雨に入り、今日は大雨。デスクワークも一息つき(本当は沢山溜まっている)、菜園の作業はお休みなので、これまでの復習をしながら、ワークを行う。

前回は、INSERT(挿入)文を使って、店舗テーブルに店舗コード、店舗名をデータベースに追加する追加した。

今回は、前回のINSERTとほとんど同様に、トランザクション処理を伴う、UPDATE(更新)とDELETE(削除)を行う。

トランザクション処理のイメージ
トランザクション処理のイメージ
4-1【支店のデータの更新】sample4-1.php
  1. <?php
  2. // 修正
  3. // 変数の初期化
  4. $tenpo_code = "0006";
  5. $tenpo_name = "えびの支店";
  6. try {
  7.     // DBへ接続
  8.     $dbh = new PDO("mysql:host=localhost; dbname=sms; charset=utf8", 'root', '');
  9.     //トランザクション開始
  10.     $dbh->beginTransaction();
  11.     // SQL作成
  12.     $sql = "UPDATE tenpo SET tenpo_name = :tenpo_name WHERE tenpo_code = :tenpo_code";
  13.     // SQL実行準備
  14.     $res = $dbh->prepare($sql);
  15.     //値をバインド
  16.     $res->bindValue(':tenpo_code', $tenpo_code, PDO::PARAM_STR);
  17.     $res->bindValue(':tenpo_name', $tenpo_name, PDO::PARAM_STR);
  18.     // SQL実行
  19.     $res->execute();
  20.     $dbh->commit();
  21.     echo "店舗コード ".$tenpo_code." の店舗名を ".$tenpo_name." に変更しました。<br>";
  22. }
  23. //エラー処理
  24. catch(PDOException $e) {
  25.     echo $e->getMessage();
  26.     die();
  27. }
  28. // 接続を閉じる
  29. $dbh = null;
  30. ?>

【注意】
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
  1. <?php
  2. // 削除
  3. // 変数の初期化
  4. $tenpo_code = "0006";
  5. try {
  6.     // DBへ接続
  7.     $dbh = new PDO("mysql:host=localhost; dbname=sms; charset=utf8", 'root', '');
  8.     //トランザクション開始
  9.     $dbh->beginTransaction();
  10.     // SQL作成
  11.     $sql = "DELETE FROM tenpo WHERE tenpo_code = :tenpo_code";
  12.     // SQL実行準備
  13.     $res = $dbh->prepare($sql);
  14.     //値をバインド
  15.     $res->bindValue(':tenpo_code', $tenpo_code, PDO::PARAM_STR);
  16.     // SQL実行
  17.     $res->execute();
  18.     $dbh->commit();
  19.     echo "店舗コード ".$tenpo_code." を削除しました。<br>";
  20. }
  21. //エラー処理
  22. catch(PDOException $e) {
  23.     echo $e->getMessage();
  24.     die();
  25. }
  26. // 接続を閉じる
  27. $dbh = null;
  28. ?>

【実行結果】

店舗コード 0006 を削除しました。

tenpoテーブルの中身を確認すると確かにデータが、「0006 池島支店」が削除されている更新されている。

削除前
削除後

これで、クラスを使ってデータベースの操作をすることができるようになった。

あとは、これらの操作の組み合わせで販売管理システムは構築可能だ。

とりあえず、ここで一旦ワークは終了する。

ホーム » 七十歳からの独習 オブジェクト指向 Work-4-1(最終回)

七十歳からの独習 オブジェクト指向 Work-4-1(最終回)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です