SQLite 是 PHP 中支持最好的数据库之一,无需额外安装数据库服务即可部署和运行,非常适合中小型项目、本地缓存、日志存储、移动服务等应用场景。PHP 支持两种 SQLite 使用方式:PDO 和 SQLite3 类。


📚 目录

  1. 环境准备:确保 PHP 支持 SQLite
  2. 使用 PDO 访问 SQLite
    • 创建连接
    • 执行 SQL
    • 预处理语句
  3. 使用 SQLite3 类访问 SQLite
    • 创建数据库与表
    • 查询与结果处理
  4. 性能调优技巧
  5. 安全实践:防注入
  6. 出站链接与推荐阅读
  7. 参考资料

1. 环境准备:确保 PHP 支持 SQLite

在命令行查看 PHP 是否已启用 SQLite:

php -m | grep sqlite

如果包含:

  • sqlite3
  • PDO
  • pdo_sqlite

说明已安装,无需额外配置。

如使用 Apache 或 Nginx,请检查 php.ini 是否启用扩展:

extension=sqlite3
extension=pdo_sqlite


2. 使用 PDO 访问 SQLite

2.1 创建连接

$pdo = new PDO('sqlite:./data.db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

2.2 执行 SQL(建表、插入、删除)

$pdo->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
$pdo->exec("INSERT INTO users (name) VALUES ('Alice')");

2.3 查询数据

$stmt = $pdo->query("SELECT * FROM users");
foreach ($stmt as $row) {
    echo $row['id'] . ": " . $row['name'] . "<br>";
}

2.4 预处理语句防注入

$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->execute([':name' => 'Bob']);


3. 使用 SQLite3 类访问 SQLite

3.1 创建数据库连接

$db = new SQLite3('data.db');

3.2 执行 SQL

$db->exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
$db->exec("INSERT INTO users (name) VALUES ('Charlie')");

3.3 查询与结果处理

$result = $db->query("SELECT * FROM users");
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
    echo $row['id'] . ": " . $row['name'] . "<br>";
}

3.4 预处理语句

$stmt = $db->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindValue(':name', 'David', SQLITE3_TEXT);
$stmt->execute();


4. 性能调优技巧

优化项方法
启用 WAL 模式$db->exec("PRAGMA journal_mode = WAL");
减少磁盘写入使用内存数据库:sqlite::memory:
提高查询性能添加索引 CREATE INDEX
提前编译语句使用预处理语句(prepare)
禁用同步(风险高)PRAGMA synchronous = OFF;

5. 安全实践:防注入

始终使用 预处理语句(prepare) 与参数绑定,切勿直接拼接用户输入:

❌ 错误做法:

$name = $_GET['name'];
$db->exec("INSERT INTO users (name) VALUES ('$name')"); // 注入风险

✅ 正确做法:

$stmt = $db->prepare("INSERT INTO users (name) VALUES (:name)");
$stmt->bindValue(':name', $name, SQLITE3_TEXT);
$stmt->execute();


6. 🔗 出站链接与推荐阅读

官方资源:

推荐文章(站内):


7. 📚 参考资料

  1. PHP.net 官方文档:https://www.php.net/manual/en/ref.pdo-sqlite.php
  2. SQLite 官方站:https://sqlite.org
  3. Stack Overflow:PHP + SQLite 经典问答
  4. GitHub 示例项目(Laravel SQLite 示例):https://github.com/laravel/laravel
  5. 《高性能 PHP 应用开发》

✅ 下一篇将介绍 Perl 与 SQLite 的集成使用方法,包括使用 DBI 模块访问 SQLite 数据库。如果你想继续,请回复 “继续”