PHPを独学するなら、Udemyの動画講座で
PHP 7も使えて快適な エックスサーバー

作成した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 />";
}
?>

○実行結果

鈴木一郎
スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク