首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 5 環境下輕量級 SQLite 資料庫開發實戰總結

     編輯:PHP 相關知識

前言:為何選擇 SQLite?

最近花了十多天重寫部落格系統,果斷捨棄 MySQL,改用 PHP 5 搭配 SQLite。主因在於 MySQL 維護繁瑣,且虛擬主機常需額外付費購買資料庫空間。SQLite 作為輕量級、基於檔案的嵌入式資料庫,自 2000 年誕生以來,經過多年發展已成為最流行的嵌入式資料庫,連 Google 桌面軟體也用它儲存用戶資料,穩定性毋庸置疑。

PHP 5 連接 SQLite 的兩種方式

PHP 5 提供兩種連接方式:預設的 SQLite 擴展(僅支援 SQLite 2)與 PDO(PHP Data Objects)。PDO 可間接支援 SQLite 3,兼容性更佳。以下封裝一個同時相容兩個版本的 PDO 類別:

class SQLite {
    private $Connection;

    public function __construct($file) {
        try {
            $this->Connection = new PDO('sqlite2:' . $file);
        } catch (PDOException $e) {
            try {
                $this->Connection = new PDO('sqlite:' . $file);
            } catch (PDOException $e) {
                exit('Error: 無法連接資料庫');
            }
        }
    }

    public function __destruct() {
        $this->Connection = null;
    }

    public function query($sql) {
        return $this->Connection->query($sql);
    }

    public function execute($sql) {
        return $this->query($sql)->fetch();
    }

    public function recordArray($sql) {
        return $this->query($sql)->fetchAll();
    }

    public function recordCount($sql) {
        return count($this->recordArray($sql));
    }

    public function lastInsertId() {
        return $this->Connection->lastInsertId();
    }
}

實戰操作範例

實例化時若資料庫檔案存在則自動開啟,不存在則自動建立:

$db = new SQLite('blog.db'); // 檔名自訂

建立資料表:

$db->query("CREATE TABLE test (id INTEGER PRIMARY KEY, title VARCHAR(50))");

新增資料:

$db->query("INSERT INTO test (title) VALUES ('泡菜')");
$db->query("INSERT INTO test (title) VALUES ('藍雨')");
$db->query("INSERT INTO test (title) VALUES ('Ajan')");
$db->query("INSERT INTO test (title) VALUES ('傲雪藍天')");

讀取資料(foreach 迴圈):

$sql = "SELECT title FROM test ORDER BY id DESC";
foreach ($db->query($sql) as $row) {
    echo $row['title'] . '<br>';
}

總結

對企業級應用 SQLite 或許略顯輕量,但對個人專案、小型網站而言,它免安裝、可攜帶、零配置、跨平台特性極具吸引力。以上為個人開發心得,如有疏漏歡迎指正。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved