SQLite 特性速覽
- 零配置、單一檔案、無伺服器程序
- 適合嵌入式、桌面應用、中小型網站
- PHP 5.0+ 內建
sqlite 擴展 (SQLite 2),pdo_sqlite (SQLite 3)
傳統 sqlite_* 函式範例 (SQLite 2/3 相容)
";
}
sqlite_close($db);
?>
現代 PDO 寫法 (推薦,支援 SQLite 3)
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 建表
$pdo->exec("CREATE TABLE IF NOT EXISTS uploads (
id INTEGER PRIMARY KEY,
file_name VARCHAR(200) UNIQUE,
make_time INTEGER
)");
// 插入 (參數綁定)
$stmt = $pdo->prepare('INSERT INTO uploads (file_name, make_time) VALUES (?, ?)');
$stmt->execute(['upload/222.data', time()]);
// 查詢
$stmt = $pdo->query('SELECT * FROM uploads');
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo "{$row['id']} | {$row['file_name']} | {$row['make_time']}
";
}
?>
錯誤處理模式比較
| 風格 | sqlite_* | PDO |
| 錯誤回傳 | false / 錯誤訊息字串 | 拋出 PDOException |
| 例外處理 | 手動檢查 | try-catch 區塊 |
| 參數綁定 | 不支援 (需手動跳脫) | prepare/execute 完整支援 |
| 交易 | sqlite_query('BEGIN') | $pdo->beginTransaction() |
效能優化 PRAGMA
$pdo->exec("PRAGMA journal_mode = WAL"); // 寫入不阻塞讀取
$pdo->exec("PRAGMA synchronous = NORMAL"); // 平衡安全/速度
$pdo->exec("PRAGMA cache_size = -32768"); // 32MB 快取
$pdo->exec("PRAGMA temp_store = MEMORY"); // 臨時表存記憶體
相關專題
- 《PHP 基於 PDO 操作資料庫技巧總結》
- 《PHP + MongoDB 資料庫操作技巧大全》