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();
}
?>

創建一個表

現在我們已經連接上了,讓我們創建一個表來存儲一些數據。想象你正在經營一家小型圖書館,並想跟踪你的書籍。以下是如何創建一個'books'表的:

<?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來避免表已存在時出錯。
  • 我們定義了四個列:id,title,author和published_year。
  • id是我們的主鍵並將自動增加。
  • 我們使用$db->exec()來執行我們的SQL查詢。

INSERT操作

太好了!我們有一個表了。現在,讓我們向圖書館中添加一些書籍:

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

$title = "了不起的蓋茨比";
$author = "F. 斯科特·菲茨傑拉德";
$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查詢。
  • 我們使用一個while循環和fetchArray()來检索每一行。
  • SQLITE3_ASSOC告訴fetchArray()返回一個關聯數組。

UPDATE操作

哎呀!我們犯了一個錯誤。"了不起的蓋茨比"實際上是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', '了不起的蓋茨比', 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', '了不起的蓋茨比', SQLITE3_TEXT);

if ($stmt->execute()) {
echo "書籍刪除成功!";
} else {
echo "刪除書籍時出錯:" . $db->lastErrorMsg();
}
?>

這就是它!我們已經涵蓋了使用PHP操作SQLite的所有基本操作。記住,熟能生巧。嘗試創建你自己的數據庫項目,也許是一個待辦事項列表或是一個食譜集。你越多地玩轉這些概念,你就會越熟悉。

希望你也和我一樣享受這次旅程。持續編程,持續學習,最重要的是,玩得開心!直到下一次,快樂數據庫!

Credits: Image by storyset