DB接続処理をコードリーディング

PHPのDB接続処理をコードリーディングしまっせ。

筆者は現在web制作フリーランス2年目でして、webエンジニアの方面へも仕事の幅を広げるためにプログラミングを学習中です。

今回は、自身もあやふやだったDBへの接続処理について解説します。

5分で読めるので、ご興味のある方はぜひ最後まで読んでみてください。

 前提情報

今回は、情報をデータベースに追加するときの処理を例にあげて解説していきます。

用意するファイルは、

  • pro_add_done.php

で、追加処理のみのコードリーディングを行います。

追加処理までのコードは省いていますが、参考書籍である「気づけばプロ並みPHP」を流用したコードですので、そちらをお持ちの方は参考にしていただければ幸いです。

コードリーディングしていく

早速ですが、コードリーディングをしてきます。

コードにはそれぞれ番号がふっており、コードした解説がそれぞれの番号下のコードの解説になります。

<?php

try {

  //①
  $pro_name = $_POST['name'];
  $pro_price = $_POST['price'];
  $pro_image_name = $_POST['image_name'];

  //②
  $dsn = 'mysql:dbname=shop; host=localhost; charset=utf8';
  $user = 'root';
  $password = 'root';
  $dbh = new PDO($dsn, $user, $password);
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  //③
  $sql = 'insert into product (name, price, image) values (?, ?, ?)'; 

   //④
  $stmt = $dbh->prepare($sql);
  
  //⑤
  $data[] = $pro_name;
  $data[] = intval($pro_price); 
  $data[] = $pro_image_name;

  $stmt->execute($data); //⑥

  $dbh = null; //⑦

  echo $pro_name . ' を追加しました<br>';

} catch (Exception $e) {
  echo '何かしらのエラーが発生しています';
  echo $e->getMessage();
  exit();
}

①$_POSTで受け取った値を変数へ格納

フォームの送信で受け取った情報を各変数に格納。

今回は、商品の名前(name), 価格(price), 商品の画像(image_name)。

② DB接続処理

$sqlに、SQL文を格納。今回は、追加処理をしたいのでinsertを使います。

valuesの後の?には、後の$dataに追加される値が格納されます。

③SQL文を作成

$sqlに、SQL文を格納。今回は、追加処理をしたいのでinsertを使います。

valuesの後の?には、後の$dataに追加される値が格納されます。

④SQL文を実行可能状態へ

$sqlに格納したSQL文はそのままでは使えないので、prepareメソッドで準備し、$stmtに再度格納します。

⑤ ①で用意した変数を$dataに格納

①で取得した値を格納した変数を、$dataに配列で順に格納していきます。

ここで注意すべきなのは順番です。

insert文ではname, price, imageと記載されています。

$dataに値を格納するときも、同じ順番で格納します。しないとエラーになります。

⑥追加処理を実行

④で用意した$stmtを$dataを引数にとったexecuteメソッドで実行します。

データベースへの追加処理はここで実行されます。

⑦DBとの接続を切断

データベースとの接続を切断します。

まとめ

今回は、データベースへの接続処理のコードリーディングを行いました。

laravel等のフレームワークを使う上でも、PHPでのそもそもの処理の構造を理解しておくことは重要だと感じます。

今回は追加処理のみの解説でしたが、その他CRUDの処理もあるので、追加執筆を行っていければと思います。

読んでいただきありがとうございました。

参考サイト

prepareメソッド - PDOの利用 - PHP入門
prepareメソッド
PDOを使ったPHPでのデータベース基本操作 - Qiita
PHPでデータベースを操作する方法をまとめました。簡易な解説なので、プログラムの日が浅い人は理解できないかもしれません。復習用としてお使いください。 PHPでデータベースを操作する場合は、まずPDOオブジェクトを生成します。この時は...