目次
はじめに
前回、PHP用のコンテナを使用可能にするかまでを記事にしました。
今回は、PHPをMySQLと連携させるところを記事にしたいと思います。
PhpMyAdminを開く
PHP用のコンテナを作成すると、自動的にPhpMyAdminが導入されます。
PhpMyAdminへアクセスするためのURLは、コンテナのinfoの中に記載されています。

infoを開く方法
コンテナを右クリックして開いたメニューの「info」をクリックしてください。

対象のURLを開くとPhpMyAdminが表示されます。

MySQLアカウント
MySQLには以下のアカウント情報で接続が可能です。
| ユーザ名 | root |
| パスワード | ※なし |
| ホスト | localhost |
データベースを作成する
今回はサンプルとして以下のデータベース、テーブルを利用します。
| データベース | blog |
| テーブル | posts |
以下をまるごとコピーして、SQLに投げ込んでください。
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; CREATE DATABASE IF NOT EXISTS `blog` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `blog`; CREATE TABLE IF NOT EXISTS `posts` ( `no` int(11) NOT NULL, `title` varchar(20) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; INSERT INTO `posts` (`no`, `title`, `created_at`) VALUES (1, 'ブログポスト1', '2020-03-16 23:41:49'), (2, 'ブログポスト2', '2020-03-16 23:49:38'), (3, 'ブログポスト3', '2020-03-16 23:49:38'); ALTER TABLE `posts` ADD PRIMARY KEY (`no`); ALTER TABLE `posts` MODIFY `no` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
PHPをMySQLにつなげる
サンプルとして blog.php という名前で作成します。
このファイルにプログラムのソースを記載します。
全体ソース
<?php
define('DATABASE','blog');
define('USER','root');
define('PASSWORD','');
define('DSN','mysql:host=localhost;charset=utf8mb4;dbname=' . DATABASE);
try{
//DB接続
$db = new PDO(DSN,USER,PASSWORD);
//エラーをスロー
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//データを取得
$posts = $db->query('SELECT * FROM posts');
} catch(PDOException $e){
header('Content-Type: text/plain; charset=UTF-8', true, 500);
exit($e->getMessage());
}
?>
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>投稿一覧</title>
</head>
<body>
<h1>投稿一覧</h1>
<table>
<thead>
<tr>
<th>No</th>
<th>Title</th>
</tr>
</thead>
<thbody>
<?php
while ($row = $posts->fetch()) {
printf('<tr><td>%d</td><td>%s</td></tr>', $row['no'], $row['title']);
}
?>
</thbody>
</table>
</body>
</html>
大雑把な解説は以下を参照してください。
DB接続情報
DBに接続するための情報をdefineで定義します。
define('DATABASE','blog');
define('USER','root');
define('PASSWORD','');
define('DSN','mysql:host=localhost;charset=utf8mb4;dbname=' . DATABASE);
DBに接続
try・catchでエラーを検知しながら、PDOを使ってDBに接続し、情報を取得します。
try{
//DB接続
$db = new PDO(DSN,USER,PASSWORD);
//エラーをスロー
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//データを取得
$posts = $db->query('SELECT * FROM posts');
} catch(PDOException $e){
header('Content-Type: text/plain; charset=UTF-8', true, 500);
exit($e->getMessage());
}
取得データを表示する
取得したデータをテーブルにレイアウトして表示します。
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>投稿一覧</title>
</head>
<body>
<h1>投稿一覧</h1>
<table>
<thead>
<tr>
<th>No</th>
<th>Title</th>
</tr>
</thead>
<thbody>
<?php
while ($row = $posts->fetch()) {
printf('<tr><td>%d</td><td>%s</td></tr>', $row['no'], $row['title']);
}
?>
</thbody>
</table>
</body>
</html>
さいごに
Codeanywhereで、PHPを使ってMySQLに接続する方法でした。
後ほどSSHを使って、コンテナに接続方法を記事にします。
今日はこの辺でー