看分享,阅见世界,分享此刻。是一个整理、分享,搜索的网站。智阅无界,洞见未来。
  • 聚好看
  • 文章
  • 专题
  • 文章
  • 登录
  • 注册
计科知识库 计科知识库 24天前

php sqlite3 增加删除 修改 写成函数

sqlite3 php

在PHP中,使用SQLite3扩展进行数据库操作(包括增加、删除和修改数据)时,可以将这些操作封装成函数。这样可以提高代码的复用性和可维护性。以下是一些基本的示例,展示如何将这些操作封装成函数。

    1. 连接到SQLite数据库
    1. 增加数据
    1. 删除数据

首先,创建一个函数来连接SQLite数据库。

  1. function connectSQLite($dbFile = 'database.db') {
  2. try {
  3. $db = new SQLite3($dbFile);
  4. return $db;
  5. } catch (Exception $e) {
  6. die('无法打开数据库: ' . $e->getMessage());
  7. }
  8. }
    1. 连接到SQLite数据库
    1. 增加数据
    1. 删除数据

创建一个函数来向数据库中插入数据。

  1. function insertData($db, $table, $data) {
  2. $keys = implode(', ', array_keys($data));
  3. $values = ':' . implode(', :', array_keys($data));
  4. $sql = "INSERT INTO $table ($keys) VALUES ($values)";
  5. $stmt = $db->prepare($sql);
  6. foreach ($data as $key => $value) {
  7. $stmt->bindValue(":$key", $value);
  8. }
  9. $result = $stmt->execute();
  10. return $result;
  11. }
    1. 连接到SQLite数据库
    1. 增加数据
    1. 删除数据

创建一个函数来从数据库中删除数据。

  1. function deleteData($db, $table, $condition) {
  2. $where = '';
  3. foreach ($condition as $key => $value) {
  4. $where .= "$key = :$key AND ";
  5. $stmt->bindValue(":$key", $value);
  6. }
  7. $where = rtrim($where, ' AND '); // 移除最后的 'AND'和空格
  8. $sql = "DELETE FROM $table WHERE $where";
  9. $stmt = $db->prepare($sql);
  10. foreach ($condition as $key => $value) {
  11. $stmt->bindValue(":$key", $value);
  12. }
  13. $result = $stmt->execute();
  14. return $result;
  15. }
  1. 修改数据
    创建一个函数来更新数据库中的数据。
  1. function updateData($db, $table, $data, $condition) {
  2. $set = '';
  3. foreach ($data as $key => $value) {
  4. $set .= "$key = :$key, ";
  5. $stmt->bindValue(":$key", $value);
  6. }
  7. $set = rtrim($set, ', '); // 移除最后的逗号和空格
  8. $where = '';
  9. foreach ($condition as $key => $value) {
  10. $where .= "$key = :$cond_$key AND ";
  11. $stmt->bindValue(":cond_$key", $value); // 使用不同的占位符前缀以区分绑定值,避免冲突
  12. }
  13. $where = rtrim($where, ' AND '); // 移除最后的 'AND'和空格
  14. $sql = "UPDATE $table SET $set WHERE $where";
  15. $stmt = $db->prepare($sql);
  16. foreach ($data as $key => $value) { // 重新绑定数据部分的值,因为我们已经重新设置了SQL语句的占位符部分
  17. $stmt->bindValue(":$key", $value);
  18. }
  19. foreach ($condition as $key => $value) { // 重新绑定条件部分的值,以防冲突问题(理论上这部分不需要重新绑定,因为上面的已经绑定了)
  20. $stmt->bindValue(":cond_$key", $value); // 但为了清晰和可能的冲突预防,再次绑定一次是安全的做法。
  21. }
  22. $result = $stmt->execute();
  23. return $result;
  24. }

数据插入函数

使用预处理语句安全地插入数据

  1. function insertData($db, $table, $data) {
  2. $columns = implode(', ', array_keys($data));
  3. $placeholders = ':' . implode(', :', array_keys($data));
  4. $sql = "INSERT INTO $table ($columns) VALUES ($placeholders)";
  5. $stmt = $db->prepare($sql);
  6. foreach ($data as $key => $value) {
  7. $stmt->bindValue(":$key", $value);
  8. }
  9. $result = $stmt->execute();
  10. return $result ? $db->lastInsertRowID() : false;
  11. }

数据查询函数

支持多种查询方式

  1. // 查询单条记录
  2. function querySingle($db, $table, $conditions = []) {
  3. $sql = "SELECT * FROM $table";
  4. if (!empty($conditions)) {
  5. $where = [];
  6. foreach ($conditions as $key => $value) {
  7. $where[] = "$key = :$key";
  8. }
  9. $sql .= " WHERE " . implode(' AND ', $where);
  10. }
  11. $stmt = $db->prepare($sql);
  12. foreach ($conditions as $key => $value) {
  13. $stmt->bindValue(":$key", $value);
  14. }
  15. $result = $stmt->execute();
  16. return $result->fetchArray(SQLITE3_ASSOC);
  17. }
  18. // 查询多条记录
  19. function queryAll($db, $table, $conditions = []) {
  20. $sql = "SELECT * FROM $table";
  21. if (!empty($conditions)) {
  22. $where = [];
  23. foreach ($conditions as $key => $value) {
  24. $where[] = "$key = :$key";
  25. }
  26. $sql .= " WHERE " . implode(' AND ', $where);
  27. }
  28. $stmt = $db->prepare($sql);
  29. foreach ($conditions as $key => $value) {
  30. $stmt->bindValue(":$key", $value);
  31. }
  32. $result = $stmt->execute();
  33. $rows = [];
  34. while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
  35. $rows[] = $row;
  36. }
  37. return $rows;
  38. }

数据更新函数

安全地更新数据记录

  1. function updateData($db, $table, $data, $conditions) {
  2. $setParts = [];
  3. foreach ($data as $key => $value) {
  4. $setParts[] = "$key = :set_$key";
  5. }
  6. $whereParts = [];
  7. foreach ($conditions as $key => $value) {
  8. $whereParts[] = "$key = :where_$key";
  9. }
  10. $sql = "UPDATE $table SET " . implode(', ', $setParts) .
  11. " WHERE " . implode(' AND ', $whereParts);
  12. $stmt = $db->prepare($sql);
  13. // 绑定更新值
  14. foreach ($data as $key => $value) {
  15. $stmt->bindValue(":set_$key", $value);
  16. }
  17. // 绑定条件值
  18. foreach ($conditions as $key => $value) {
  19. $stmt->bindValue(":where_$key", $value);
  20. }
  21. $result = $stmt->execute();
  22. return $result ? $db->changes() : false;
  23. }

数据删除函数

删除指定条件的记录

  1. function deleteData($db, $table, $conditions) {
  2. $whereParts = [];
  3. foreach ($conditions as $key => $value) {
  4. $whereParts[] = "$key = :$key";
  5. }
  6. $sql = "DELETE FROM $table WHERE " . implode(' AND ', $whereParts);
  7. $stmt = $db->prepare($sql);
  8. foreach ($conditions as $key => $value) {
  9. $stmt->bindValue(":$key", $value);
  10. }
  11. $result = $stmt->execute();
  12. return $result ? $db->changes() : false;
  13. }

完整使用示例

  1. // 使用示例
  2. $db = connectDB('mydatabase.db');
  3. // 创建表(如果需要)
  4. $db->exec("CREATE TABLE IF NOT EXISTS users (
  5. id INTEGER PRIMARY KEY AUTOINCREMENT,
  6. name TEXT NOT NULL,
  7. email TEXT NOT NULL,
  8. age INTEGER
  9. )");
  10. // 插入数据
  11. $newUser = [
  12. 'name' => '张三',
  13. 'email' => 'zhangsan@example.com',
  14. 'age' => 25
  15. ];
  16. $userId = insertData($db, 'users', $newUser);
  17. echo "新用户ID: $userId\n";
  18. // 查询数据
  19. $user = querySingle($db, 'users', ['id' => 1]);
  20. print_r($user);
  21. // 更新数据
  22. $updateResult = updateData($db, 'users', ['age' => 26], ['id' => 1]);
  23. echo "更新了 $updateResult 条记录\n";
  24. // 删除数据
  25. $deleteResult = deleteData($db, 'users', ['id' => 2]);
  26. echo "删除了 $deleteResult 条记录\n";
  27. // 关闭连接
  28. $db->close();


欢迎访问源界面 从代码出发,向无限可能延伸.
【 可以发现更多的个人博客站点,点点滴滴,网络空间中的站点生活! 】

生活看更多

  • © 2025 看分享 阅见世界,分享此刻。
  • 建议
  • | 鄂ICP备14016484号-7

    鄂公网安备 42068402000189

    访问微博看分享