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

PHPプログラミングの教科書 [php1st.com]

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

投稿日:

作成した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の基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル

WordPressのPHPでお困りのときは

気軽にご相談ください。銀座教室・スカイプ・出張・メールで対応します。

西沢直木のIT講座/WordPress個別サポート

-PHP全般

Copyright© PHPプログラミングの教科書 [php1st.com] , 2018 All Rights Reserved Powered by AFFINGER5.