本教程将带你从零开始学习如何使用 PHP 操作 SQLite3 数据库,并逐步深入,掌握更高级的技巧。 一、入门篇 1. 环境准备 PHP 版本: 确保你的 PHP 版本 >= 5.3.0,并且启用了 SQLite3 扩展。你可以通过 `phpinfo()` 函数查看是否启用了 SQLite3 扩展。 SQLite3: SQLite3 是一个嵌入式数据库,无需安装额外的服务器软件。 2. 连接数据库
<?php
// 创建或连接数据库
$db = new SQLite3('mydatabase.db');
if ($db) {
echo '数据库连接成功';
} else {
echo '数据库连接失败';
}
?>
3. 创建表
<?php
$db = new SQLite3('mydatabase.db');
// 创建 users 表
$query = "CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
email TEXT NOT NULL
)";
$db->exec($query);
echo '表创建成功';
?>
4. 插入数据
<?php
$db = new SQLite3('mydatabase.db');
// 插入数据
$query = "INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com')";
$db->exec($query);
echo '数据插入成功';
?>
5. 查询数据
<?php
$db = new SQLite3('mydatabase.db');
// 查询数据
$result = $db->query('SELECT * FROM users');
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "ID: " . $row['id'] . " - Username: " . $row['username'] . " - Email: " . $row['email'] . "<br>";
}
?>
6. 更新数据
<?php
$db = new SQLite3('mydatabase.db');
// 更新数据
$query = "UPDATE users SET email = 'john_new@example.com' WHERE id = 1";
$db->exec($query);
echo '数据更新成功';
?>
7. 删除数据
<?php
$db = new SQLite3('mydatabase.db');
// 删除数据
$query = "DELETE FROM users WHERE id = 1";
$db->exec($query);
echo '数据删除成功';
?>
二、进阶篇 1. 预处理语句 (Prepared Statements) 预处理语句可以有效防止 SQL 注入攻击,并提高查询效率。
<?php
$db = new SQLite3('mydatabase.db');
// 预处理语句
$stmt = $db->prepare('INSERT INTO users (username, email) VALUES (:username, :email)');
$stmt->bindValue(':username', 'jane_doe', SQLITE3_TEXT);
$stmt->bindValue(':email', 'jane@example.com', SQLITE3_TEXT);
$stmt->execute();
echo '数据插入成功';
?>
2. 事务处理 事务可以确保一组数据库操作要么全部成功,要么全部失败。
<?php
$db = new SQLite3('mydatabase.db');
// 开始事务
$db->exec('BEGIN TRANSACTION');
try {
$db->exec("INSERT INTO users (username, email) VALUES ('alice', 'alice@example.com')");
$db->exec("INSERT INTO users (username, email) VALUES ('bob', 'bob@example.com')");
$db->exec('COMMIT');
echo '事务提交成功';
} catch (Exception $e) {
$db->exec('ROLLBACK');
echo '事务回滚';
}
?>
3. 错误处理 使用 `try...catch` 块捕获和处理数据库操作中的错误。
<?php
$db = new SQLite3('mydatabase.db');
$query = "INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com')";
if ($db->exec($query)) {
echo '数据插入成功';
} else {
echo '错误代码: ' . $db->lastErrorCode() . ' - 错误信息: ' . $db->lastErrorMsg();
}
?>
三、精通篇 1. 使用 SQLite3 扩展的高级功能 SQLite3Stmt: 用于预处理语句。 SQLite3Result: 用于处理查询结果。 SQLite3::escapeString(): 用于转义字符串,防止 SQL 注入。 2. 性能优化 索引: 为经常查询的字段创建索引,提高查询速度。 缓存: 使用缓存机制减少数据库查询次数。 批量操作: 使用批量插入、更新等操作提高效率。 3. 安全性 防止SQL注入: 始终使用预处理语句或转义用户输入。 数据验证: 在插入数据之前进行验证,确保数据的完整性和有效性。 权限控制: 限制数据库用户的权限,防止数据泄露。 四、资源推荐 PHP 官方文档: https://www.php.net/manual/zh/book.sqlite3.php SQLite 官方文档: https://www.sqlite.org/docs.html SQLite 教程: https://www.runoob.com/sqlite/sqlite-tutorial.html 五、总结 通过学习本教程,你已经掌握了 PHP 操作 SQLite3 数据库的基本知识和一些高级技巧。接下来,你可以通过实践项目来巩固所学知识,并探索更多 SQLite3 的功能和应用场景。
|