SQLite 是 PHP 中支持最好的数据库之一,无需额外安装数据库服务即可部署和运行,非常适合中小型项目、本地缓存、日志存储、移动服务等应用场景。PHP 支持两种 SQLite 使用方式:PDO 和 SQLite3 类。
📚 目录
- 环境准备:确保 PHP 支持 SQLite
- 使用 PDO 访问 SQLite
- 创建连接
- 执行 SQL
- 预处理语句
- 使用 SQLite3 类访问 SQLite
- 创建数据库与表
- 查询与结果处理
- 性能调优技巧
- 安全实践:防注入
- 出站链接与推荐阅读
- 参考资料
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. 🔗 出站链接与推荐阅读
官方资源:
推荐文章(站内):
- 👉 PHP 使用 PDO 操作 SQLite 完整示例
- 👉 SQLite 与 PHP 的性能瓶颈与优化
- 👉 PHP 防止 SQL 注入的最佳实践
- 👉 PHP 项目中使用 SQLite 替代 MySQL 的利与弊
7. 📚 参考资料
- PHP.net 官方文档:https://www.php.net/manual/en/ref.pdo-sqlite.php
- SQLite 官方站:https://sqlite.org
- Stack Overflow:PHP + SQLite 经典问答
- GitHub 示例项目(Laravel SQLite 示例):https://github.com/laravel/laravel
- 《高性能 PHP 应用开发》
✅ 下一篇将介绍 Perl 与 SQLite 的集成使用方法,包括使用 DBI 模块访问 SQLite 数据库。如果你想继续,请回复 “继续”。
发表回复