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

PHP 5 使用 PDO 存取 SQLite 3 完整範例:建表、插入、查詢與交易控制

     編輯:PHP 綜合知識

PHP 5.1+ 內建 PDO (PHP Data Objects) 提供統一資料庫存取介面,搭配 SQLite 3 嵌入式資料庫,無需獨立資料庫伺服器即可輕鬆實作本地儲存。本文提供完整 CRUD 與交易範例。

環境需求

  • PHP 5.1+(需啟用 pdo_sqlite 擴展,通常預設開啟)。
  • SQLite 3 函式庫(PHP 內建)。

完整程式碼

<?php
// 1. 建立連線(檔案不存在會自動建立)
$dsn = 'sqlite:sql.db';
try {
    $dbh = new PDO($dsn);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "PDO 連線成功<br>";

    // 2. 建立資料表
    $dbh->exec("CREATE TABLE IF NOT EXISTS PKU (
        id INTEGER PRIMARY KEY,
        name VARCHAR(255)
    )");
    echo "建表成功<br>";

    // 3. 插入資料(使用交易確保原子性)
    $dbh->beginTransaction();
    $dbh->exec("INSERT INTO PKU (id, name) VALUES (1, 'jarjin')");
    $dbh->commit();
    echo "插入成功<br>";

    // 4. 準備查詢並執行
    $sth = $dbh->prepare('SELECT * FROM PKU');
    $sth->execute();

    // 5. 取得所有結果(關聯陣列)
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    print_r($result);

    // 關閉連線
    $dbh = null;
} catch (PDOException $e) {
    echo "連線失敗: " . $e->getMessage();
    $dbh = null;
}
?>

關鍵 PDO 方法速查

方法用途
new PDO($dsn)建立連線,DSN 格式:sqlite:/path/db.sqlite
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)啟用例外模式,錯誤自動拋出 PDOException
exec($sql)執行不回傳結果集的 SQL(CREATE, INSERT, UPDATE, DELETE),回傳影響行數
prepare($sql)準備預處理語句,防止 SQL 注入
execute([$params])執行預處理語句,參數綁定
fetchAll(PDO::FETCH_ASSOC)一次取得所有行,回傳關聯陣列
beginTransaction() / commit() / rollBack()交易控制
lastInsertId()取得最後插入的自增 ID

SQLite 3 特有優勢

  • 零配置:單一檔案即資料庫,適合桌面應用、嵌入式裝置、快速原型。
  • ACID 交易:支援完整交易語意。
  • 跨平台:檔案格式在 32/64 位元、Big/小端序間可直接複製使用。
  • 記憶體資料庫:sqlite::memory: 可建立極速暫存資料庫。

常見陷阱與解決

  • 檔案權限:資料庫檔案及其所在目錄需 Web 使用者可讀寫。
  • 並發寫入:SQLite 採資料庫級鎖,高併發寫入場景建議改用 MySQL/PostgreSQL。
  • 型別親和性:SQLite 採動態型別,欄位宣告型別僅為建議,實際儲存依值類型決定。

PDO + SQLite 3 是輕量級 PHP 專案的最佳拍檔,掌握其用法可大幅降低部署複雜度。

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