データベースへの接続
phpファイルからデータベースへ接続します。データベースはsqliteを使います。
ディレクトリ構成は以下のようにします。
ディレクトリ構成
- myapp
- db
- myapp.db
- index.php
- db
PHPファイル
「 index.php 」ファイルを以下のようにします。
<?php
try {
// index.php があるディレクトリ基準
$dbPath = __DIR__ . '/db/myapp.db';
$pdo = new PDO('sqlite:' . $dbPath);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit('DB接続エラー: ' . $e->getMessage());
}
$stmt = $pdo->query("SELECT id, name, email FROM users");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>SQLite テスト</title>
</head>
<body>
<h1>ユーザー一覧</h1>
<?php if (empty($rows)): ?>
<p>データがありません</p>
<?php else: ?>
<ul>
<?php foreach ($rows as $row): ?>
<li>
<?= htmlspecialchars($row['name'], ENT_QUOTES, 'UTF-8') ?>
(<?= htmlspecialchars($row['email'], ENT_QUOTES, 'UTF-8') ?>)
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</body>
</html> データベース
データベースとテーブルを作成するには以下のようにします。
まず、dbディレクトリに移動します。以下のコマンドを実行しデータベースへ接続します。
sqltie3 myapp.db SQL を実行しテーブルの作成とデータを登録します。
# テーブルの作成
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at TEXT NOT NULL
);
# データの投入
INSERT INTO users (name, email, created_at)
VALUES ('山田太郎', 'yamada@example.com', datetime('now')); 内蔵サーバーの起動
以下を実行し内蔵サーバーを起動します。
php -S localhost:8000 「 http://localhost:8000/ 」に接続してデータが取得できているか確認します。
「 Ctrl + C 」でサーバーを停止することができます。