忘れないように記録しとこ

カバの樹

【クラウドエディタ】CodeanywhereでPHPとMySQLを使ってみる

はじめに

前回、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を使って、コンテナに接続方法を記事にします。

 

今日はこの辺でー

  • B!