データベース周り
データベースの操作
データベースはphpMyAdminにて操作可能です。
同じくポートビューにて、 phpmyadmin:80
の行からアクセス可能です。

地球アイコンのクリックでphpMyAdminページへ移動できます。

標準状態でサンプルのデータベース(SAMPLE)が用意されているので、それを使って下さい。 なお本環境では データベースはひとつだけ作成されます 。 通常はひとつのデータベースで十分作れるでしょうから、この中でテーブルを作成していきましょう。
注釈
データベースの設定(名前やアクセス情報)を変更したい場合は、 こちらを参照してください。
データベースの設定について
データベースの設定は、 env.txt
を参照してください。
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=SAMPLE
MYSQL_USER=sampleuser
MYSQL_PASSWORD=samplepass
見るだけでもわかるとおり、以下の構造で記述されています。
MYSQL_ROOT_PASSWORD
: 万一特権アクセスが必要な場合に利用するパスワード(ほぼ使いません)MYSQL_DATABASE
: 作成するデータベース名MYSQL_USER
:MYSQL_DATABASE
で作成したデータベースへの(ほぼ)フルアクセス権を持つユーザー名MYSQL_PASSWORD
:MYSQL_USER
に対するパスワード
注釈
特権アクセスが不要であれば、MYSQL_ROOT_PASSWORD
の代わりに
MYSQL_RANDOM_ROOT_PASSWORD=1
と設定しておいてください。これで管理特権取得することが(すごく)困難となります。
このファイルを変更した場合、反映には環境の再構築が必要になります。 この件については、データベース名・アクセス情報の変更を参照してください。
データベースへのアクセス
PHPのPDO(MySQLドライバ)によるアクセスとしては、以下のようになります。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>データベースアクセスのサンプル</title>
</head>
<body>
<?php
# env.txtを参考にして、データベースへの接続情報を設定してください
$dbhost = "db"; # データベースのホスト名(本環境では固定)
$dbname = "SAMPLE"; # データベース名
$dbuser = "sampleuser"; # データベース接続ユーザ名
$dbpassword = "samplepass"; # データベース接続パスワード
# 以上からDSN文字列を生成
$dsn = "mysql:host={$dbhost};dbname={$dbname}";
# データベースハンドルを取得
try {
$handle = new PDO($dsn, $dbuser, $dbpassword);
} catch (PDOException $e) {
echo "DB接続に失敗しました。<br>";
echo $e->getMessage();
exit;
}
# データベースハンドルを使って、内包するテーブル一覧を取得
$sql = "SHOW TABLES";
try {
$result = $handle->query($sql);
} catch (PDOException $e) {
echo "テーブル一覧の取得に失敗しました。<br>";
echo $e->getMessage();
exit;
}
# テーブル数を表示
$num_tables = $result->rowCount();
echo "<p>データベースには {$num_tables} 個のテーブルがあります。</p>";
if ($num_tables > 0) {
# テーブル一覧を箇条書きで表示
echo "<ul>";
foreach ($result as $row) {
echo "<li>{$row[0]}</li>";
}
echo "</ul>";
}
# 接続を閉じる
$handle = null;
?>
</body>
</html>
これで、test.php
にブラウザでアクセスすると、以下のように見えます。
注釈
ポートビュー経由でブラウザ表示させた後、アドレスを表示して/test.php
を付加することで確認できます。
初期状態ではテーブルが無いので0件と出ます。

phpMyAdmin側でテーブルを適当に足してからアクセスしてみると、件数が増えるので確認できます。

PHPコードについて
このテキストはPHPの学習参考書ではありませんので、 データベースへの接続や利用については、各自で調べてください。