気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 8 view

データベースを自動セットアップ(テーブルを自動作成)するには

作成したPHPスクリプトを配布するとき、データベースのセットアップが面倒な場合があります。

特に、掲示板やアンケートなどのちょとしたフリーPHPスクリプトを作成して不特定多数のユーザーにダウンロードしてもらう場合、データベースやテーブルの作成など、データベースのインストールを意識せずに使い始めることができれば便利です。

SQLiteとCREATE TABLE IF NOT EXISTSでデータベースを“自動セットアップ”

そのような設計が良いのか悪いのかは別にして、データベースの自動セットアップのヒントになるのがSQLiteCREATE TABLE IF NOT EXISTSです。

データベースサーバーを使わない「SQLite」

SQLiteはPHP5から標準で使用可能なデータベースエンジンで、データベースサーバーを使わない手軽さが大きなメリットです(データベースに接続するというよりも、データベースファイルを開くイメージ)。

SQLiteを使うPHPスクリプトでは、MySQLのように事前にデータベースサーバーを稼動し
ておく必要はありません。実行時に、指定されたデータベースファイルが存在しなければ、新たに作成されます。

※SQLiteのメリットについて詳しくは、「SQLite入門」も参考にしてください。

テーブルが既存の場合は作成しない「CREATE TABLE IF NOT EXISTS」

CREATE TABLE IF NOT EXISTSは、テーブルを作成するCREATE TABLEについて、「そのテーブルが存在しなければ」という条件を付加したものです。

初回実行時はテーブルが作成され、2回目以降はテーブル作成されないので、エラーで処理が停止しません。

このようにSQLiteCREATE TABLE IF NOT EXISTSを組み合わせることで、ユーザーにデータベースのセットアップを意識させず(暗黙のうちにセットアップされる)に、PHPスクリプトを使い始めてもらうことができます。

PHPスクリプトの構成によってはベストの解決策とは限りませんが、ちょっとしたアプリケーションでは有効な手法です。

次のPHPスクリプトは、テーブルにデータを格納し、そのデータを表示する単純なデータベーススクリプトです。

実行前にデータベースサーバーの稼動やデータベース(test.sqliteというファイル)の作成、テーブル(t1テーブル)作成などの手間がかからない点がポイントです。

<?php
// データベースに接続
$dsn = "sqlite:test.sqlite";
$conn = new PDO($dsn);

// テーブルの作成
$sql = "CREATE TABLE IF NOT EXISTS t1(id INTEGER PRIMARY KEY, name)";
$stmt = $conn->prepare($sql);
$stmt->execute();

// データの追加
$sql = "INSERT INTO t1(name) VALUES('鈴木一郎')";
$stmt = $conn->prepare($sql);
$stmt->execute();

// データの取得
$sql = "SELECT * FROM t1";
$stmt = $conn->prepare($sql);
$stmt->execute();

// データの一覧表示
while ($row = $stmt->fetch()) {
    echo $row["name"] . "<br />";
}
?>

○実行結果

鈴木一郎

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP