SQLite - PHP: 初級者向けガイド

こんにちは、未来のプログラミングスーパースター!SQLiteとPHPの世界に踏み出す興奮的な旅へようこそ。一緒にこの魅力的なトピックを探求するガイドとして、私はとても楽しみにしています。プログラミングが初めてであれば心配しないでください。私たちは一歩一歩進んでいきます。すぐにプロのようにデータベースを扱えるようになるでしょう!

SQLite - PHP

インストール

SQLiteとPHPのエキサイティングな世界に飛び込む前に、必要なツールをすべて準備する必要があります。料理の冒険の準備と同じで、材料と調理器具を用意する必要があります!

まず、コンピュータにPHPがインストールされているか確認してみましょう。コマンドプロンプトまたはターミナルを開き、以下のコマンドを入力します:

php -v

バージョン情報が表示されたら、素晴らしい!すべて準備ができています。もし表示されない場合は、心配しないでください。公式のPHPウェブサイト(php.net)にアクセスし、インストールガイドに従ってください。

次に、PHPでSQLiteを有効にします。通常、デフォルトで有効になっていますが、確認してみましょう。php.iniファイルを開き(php --iniを実行して場所を確認)、以下の行を探します:

extension=sqlite3

もしこれがコメントアウトされている(行の始めにセミコロンが付いている)場合は、セミコロンを削除して有効にします。

おめでとうございます!私たちの旅の最初のステップを完了しました。さあ、エキサイティングな部分に進みましょう。実際にPHPでSQLiteを使うことです!

PHPインターフェースAPI

PHPはSQLiteデータベースと対話するための関数セットを提供しています。これらはあなたのツールボックスのようなものです。それぞれの関数は、データベースを操作するための異なるツールです。以下に最も重要なものをいくつか挙げます:

関数 説明
sqlite3::open() SQLiteデータベースを開く
sqlite3::exec() SQLクエリを実行する
sqlite3::query() SQLクエリを実行し、結果セットを返す
sqlite3::close() データベース接続を閉じる

これらが今は混乱するかもしれませんが、進むにつれてそれぞれの使い方を学んでいきます!

データベースに接続

ツールボックスを準備したので、まずデータベースに接続してみましょう。データストレージのドアを開くようなものです。以下のようにします:

<?php
$db = new SQLite3('myDatabase.db');
?>

この一行は多くことを行います!以下に分解してみます:

  • 新しいSQLite3オブジェクトを作成し、$db変数に格納します。
  • 'myDatabase.db'はデータベースファイルの名前です。もしこれが存在しない場合、SQLiteが自動で作成してくれます。

データベース操作をtry-catchブロックで囲むことを常に覚えておき、エラーを優雅に処理するようにしましょう。以下はより強固なバージョンです:

<?php
try {
$db = new SQLite3('myDatabase.db');
echo "データベースに接続しました!";
} catch (Exception $e) {
echo "データベースに接続できませんでした: " . $e->getMessage();
}
?>

テーブルの作成

接続が完了したので、データを保存するためのテーブルを作成してみましょう。例えば、小さな図書館を運営していて、本の管理をしたい場合、以下のようにテーブルを作成します:

<?php
$db = new SQLite3('library.db');

$query = "CREATE TABLE IF NOT EXISTS books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author TEXT NOT NULL,
published_year INTEGER
)";

if ($db->exec($query)) {
echo "テーブルを作成しました!";
} else {
echo "テーブルの作成に失敗しました: " . $db->lastErrorMsg();
}
?>

以下に分解してみます:

  • CREATE TABLE IF NOT EXISTSを使用して、テーブルが既に存在する場合にエラーが発生しないようにします。
  • 4つのカラムを定義します:id、title、author、published_year。
  • idは主キーで、自動的にインクリメントされます。
  • $db->exec()を使用してSQLクエリを実行します。

INSERT操作

素晴らしい!テーブルができました。では、図書館に本を追加してみましょう:

<?php
$db = new SQLite3('library.db');

$title = "The Great Gatsby";
$author = "F. Scott Fitzgerald";
$year = 1925;

$query = "INSERT INTO books (title, author, published_year)
VALUES (:title, :author, :year)";

$stmt = $db->prepare($query);
$stmt->bindValue(':title', $title, SQLITE3_TEXT);
$stmt->bindValue(':author', $author, SQLITE3_TEXT);
$stmt->bindValue(':year', $year, SQLITE3_INTEGER);

if ($stmt->execute()) {
echo "本を追加しました!";
} else {
echo "本の追加に失敗しました: " . $db->lastErrorMsg();
}
?>

これは少し複雑に見えますが、実際はシンプルです:

  • プリペアドステートメント(:title:author:year)を使用して、SQLインジェクション攻撃を防ぎます。
  • クエリをprepareし、各プレースホルダーにbindValueします。
  • 最後にステートメントをexecuteします。

SELECT操作

さあ、データベースから本を取得してみましょう:

<?php
$db = new SQLite3('library.db');

$query = "SELECT * FROM books";
$result = $db->query($query);

while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "タイトル: " . $row['title'] . "<br>";
echo "著者: " . $row['author'] . "<br>";
echo "刊行年: " . $row['published_year'] . "<br><br>";
}
?>

以下に何が起こっているか説明します:

  • $db->query()を使用してSELECTクエリを実行します。
  • ループを使用してfetchArray()で各行を取得します。
  • SQLITE3_ASSOCを使用して、連想配列として行を返します。

UPDATE操作

あやまりました。"The Great Gatsby"は1925年に出版されたのではなく、1924年に出版されたんです。データベースを更新してみましょう:

<?php
$db = new SQLite3('library.db');

$query = "UPDATE books SET published_year = :year WHERE title = :title";

$stmt = $db->prepare($query);
$stmt->bindValue(':year', 1925, SQLITE3_INTEGER);
$stmt->bindValue(':title', 'The Great Gatsby', SQLITE3_TEXT);

if ($stmt->execute()) {
echo "本を更新しました!";
} else {
echo "本の更新に失敗しました: " . $db->lastErrorMsg();
}
?>

これはINSERT操作と似ていますが、UPDATE SQLコマンドを使用しています。

DELETE操作

最後に、データベースから本を削除する方法を学びましょう:

<?php
$db = new SQLite3('library.db');

$query = "DELETE FROM books WHERE title = :title";

$stmt = $db->prepare($query);
$stmt->bindValue(':title', 'The Great Gatsby', SQLITE3_TEXT);

if ($stmt->execute()) {
echo "本を削除しました!";
} else {
echo "本の削除に失敗しました: " . $db->lastErrorMsg();
}
?>

そして、ここまででSQLiteとPHPを使った基本的な操作をすべてカバーしました。実践を積むことで完璧になります。自分でデータベースプロジェクトを作成してみてください。たとえば、タスクリストやレシピ帳など。これらの概念を遊びながら、より慣れていくと良いでしょう。

この旅を楽しんでいただけたことを願っています。codingを続け、学び続け、そして、一番重要的是に楽しみましょう!次回まで、ハッピーダータベースライフ!

Credits: Image by storyset