目次
はじめに
前回、PHP用のコンテナを使用可能にするかまでを記事にしました。
https://www.kabanoki.net/6255/
今回は、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を使って、コンテナに接続方法を記事にします。
今日はこの辺でー