添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Sqlite

Sqlite 是一個輕便的檔案型關聯式資料庫,常利用於本地端的資料庫儲存,例如 chrome 。而我們曾經在前幾篇文章介紹過如何在 laravel 中使用 sqlite,這一篇會介紹在原生的 PHP 當中使用 Sqlite。

Sqlite3 以及 PDO

連結到 sqlite 的方式可以透過 sqlite3 lib 或是 php 原生的 pdo 方式,這篇文章會以 sqlite3 lib 來示範。在開始之前,先透過 phpinfo() 方法來檢查 sqlite3 lib 是否已經被啟用,否則可能會沒辦法連結。

建立資料庫

這邊先以 sqlite3 CLI 手動方式建立一個 sqlite 資料庫。先在工作目錄下執行指令:

sqlite database.sqlite
sqlite3 database.sqlite

進入 CLI 之後,再執行以下語法:

CREATE TABLE "User" (
	"userId"	INTEGER PRIMARY KEY AUTOINCREMENT,
	"UserName"	TEXT,
	"email"	TEXT,
	"PassWord"	TEXT

如果 database.sqlite 不存在,執行過上面建立表格的指令後,就會產生一個 database.sqlite 以及 User 的表。

連結到 sqlite

開始進行操作以前,要先連結到 sqlite。

$db = new SQLite3('database.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
$statement = $db->prepare('INSERT INTO "User" ("UserName", "email", "PassWord") VALUES (:name, :mail, :pw)');
$statement->bindValue(':name', 'test');
$statement->bindValue(':mail', 'abc@abc');
$statement->bindValue(':pw', '123456');
$statement->execute();

prepare()

利用 prepare 來進行查詢語句的預備,並可以設定參數。

bindValue()

利用 bindValue 來繫結 prepare 中的參數。

execute()

執行上面的查詢語句。

如果語句正確被執行,可以透過 GUI 工具看到資料已經被新增了。

$statement = $db->prepare('SELECT * FROM "User" WHERE "UserName" = ?');
$statement->bindValue(1, 'test');
$statement = $statement->execute();
$statement = $statement->fetchArray(SQLITE3_NUM);
print_r($statement);

基本與插入資料的方法相同,不同的是要將回傳的資料進行處理。

fetchArray()

fetchArray 可以將回傳的資料物件序列化為陣列,而 SQLITE3_NUM 會將欄位以數字方式編號,而 SQLITE3_ASSOC 會將欄位以欄位名稱編號。

多筆回傳資料

如果資料一次有數筆,可以使用 while 來持續輸出:

while($value = $statement->fetchArray(SQLITE3_ASSOC)){
    print($value['userId']);

如果使用 SQLITE3_NUM ,將 'userId' 替代成陣列索引即可。

$statement = $db->prepare('DELETE FROM "User" WHERE "userId" = ?');
$statement->bindValue(1, 1);
$statement = $statement->execute();

基本上也與新增與查詢相同,正確執行資料就會被刪除了。

sqlite 具有快速輕便的特性,作為小型專案或是練習之用都相當好用,可以省去架設 mySql 等資料庫系統的時間。