【PHP】PDOを使ってMySQLに接続する方法
今回はPHPとMySQLの接続にPDOを利用する方法を記載します。
PDOとは
PHPからMySQLへ接続する方法はいくつかあるのですが、PDOはPHP 5.1から実装されたデータベース抽象化のためのクラスです。
説明するとかなり長くなるため、説明はnoteでは省きますので下記記事あたりを読んでみてください。
あとは公式ドキュメントはやはり詳しく書いています。
ご確認よろしくお願いします🙏
テーブルの作成
それでは実装に移ろうと思いますが、まずはじめにデータを格納するテーブルを作成します。
今回は例として、『sample』というテーブルを作成します。データ定義は下記のようにします。
下記コマンドでテーブルを作成します。
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です。
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>
こちらで下記のように表示されます。
GitHubリポジトリ
今回作成したソースはGithubにて公開しています。下記リンクよりご確認ください。(L4ブランチです。)
読んでいただきありがとうございます。