見出し画像

【PHP】PDOを使ってMySQLに接続する方法

今回はPHPとMySQLの接続にPDOを利用する方法を記載します。

PDOとは

PHPからMySQLへ接続する方法はいくつかあるのですが、PDOはPHP 5.1から実装されたデータベース抽象化のためのクラスです。

説明するとかなり長くなるため、説明はnoteでは省きますので下記記事あたりを読んでみてください。

あとは公式ドキュメントはやはり詳しく書いています。

ご確認よろしくお願いします🙏


テーブルの作成

それでは実装に移ろうと思いますが、まずはじめにデータを格納するテーブルを作成します。

今回は例として、『sample』というテーブルを作成します。データ定義は下記のようにします。

スクリーンショット 2019-10-10 9.52.26

下記コマンドでテーブルを作成します。

CREATE TABLE sample (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(128),
price VARCHAR(128),
date DATETIME NOT NULL
)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

下記コマンドでサンプルデータを3件登録します。

INSERT INTO sample (title, price, date) VALUES 
('いちご', '100', now()),
('メロン', '200', now()),
('スイカ', '1000', now());

こんな感じで登録されればOKです。

スクリーンショット 2019-10-10 10.09.21


PHPの実装

PDOでMySQLに接続するには、

・ホスト
・データベース名
・データベースユーザ名
・データベースパスワード

が必要になります。こちらあらかじめご自身の環境をメモしておいてください。

それでは実装します。まずは「db_connect.php」というPHPを作成します。作成しましたら、下記のように記載してください。

<?php
$user = 'test';//データベースユーザ名
$password = 'test1234';//データベースパスワード
$dbName = "sample";//データベース名
$host = "sp_db_1";//ホスト
try {
   // MySQLへの接続
   $dsn = "mysql:host={$host};dbname={$dbName};charser=utf8";
   $pdo = new PDO($dsn, $user, $password);
   $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
   $sql = "SELECT * from sample";
   $stm = $pdo->prepare($sql);
   $stm->execute();
   $result = $stm->fetchAll(PDO::FETCH_ASSOC);
      
   // 接続を閉じる
   $stm = null;
  
} catch (PDOException $e) { // PDOExceptionをキャッチする
   print $e->getMessage() . "<br/gt;";
   die();
}
?>

こちらでDBとの接続ができます。

※下記部分はご自分の環境に合わせて修正してください。

$user = 'test';//データベースユーザ名
$password = 'test1234';//データベースパスワード
$dbName = "sample";//データベース名
$host = "sp_db_1";//ホスト


また、表示部分として下記を記載します。

<table>
   <thead>
       <tr>
           <th>ID</th>
           <th>タイトル</th>
           <th>価格</th>
           <th>日付</th>
       </tr>
   </thead>
   <tbody>
       <?php
           foreach ($result as $row){
               print "<tr>";
               print "<td>".$row['id']."</td>";
               print "<td>".$row['title']."</td>";
               print "<td>".$row['price']."</td>";
               print "<td>".$row['date']."</td>";
               print "</tr>";
           }
       ?>
   </tbody>    
</table>

こちらで下記のように表示されます。

スクリーンショット 2019-10-11 13.04.38


GitHubリポジトリ

今回作成したソースはGithubにて公開しています。下記リンクよりご確認ください。(L4ブランチです。)


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