找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 60|回复: 0

[技巧分享] php 自定义数据库函数支持增删改查4类

[复制链接]
  • TA的每日心情
    奋斗
    2024-12-23 00:39
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    766680204
    发表于 2024-12-19 00:28:27 | 显示全部楼层 |阅读模式

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    本帖最后由 飞凤互联 于 2024-12-19 00:39 编辑

    php 自定义数据库函数支持增删改查4类

    方便在自己开发的时候需要操作数据库

    1. // 假设你已经有了数据库连接 $conn 和表前缀 $db_prefix

    2. /**
    3. * 通用的数据库操作函数
    4. *
    5. * @param string $conn        数据库连接对象
    6. * @param string $db_prefix   表前缀
    7. * @param string $action      操作类型:select, insert, update, delete
    8. * @param string $table       表名(不含前缀)
    9. * @param array  $data        操作涉及的数据(对于select,这是查询条件;对于insert/update,这是要设置的数据)
    10. * @param array  $where       查询或更新条件(仅对select和update有用)
    11. * @return mixed              查询结果或操作影响的行数,或者false(如果操作失败)
    12. */
    13. function dbOperation($conn, $db_prefix, $action, $table, $data = [], $where = []) {
    14.     $table = "`{$db_prefix}{$table}`";
    15.    
    16.     switch ($action) {
    17.         case 'select':
    18.             $sql = "SELECT * FROM {$table}";
    19.             if (!empty($where)) {
    20.                 $sql .= " WHERE " . implode(' AND ', array_map(function($key) use ($where) {
    21.                     return "`{$key}`=?";
    22.                 }, array_keys($where)));
    23.             }
    24.             $stmt = $conn->prepare($sql);
    25.             if (!empty($where)) {
    26.                 $types = str_repeat('s', count($where));
    27.                 $stmt->bind_param($types, ...array_values($where));
    28.             }
    29.             break;
    30.             
    31.         case 'insert':
    32.             $keys = implode(', ', array_keys($data));
    33.             $values = implode("', '", array_values($data));
    34.             $sql = "INSERT INTO {$table} ({$keys}) VALUES ('{$values}')";
    35.             $stmt = $conn->prepare($sql);
    36.             break;
    37.             
    38.         case 'update':
    39.             $set = implode(', ', array_map(function($key, $value) {
    40.                 return "`{$key}`=?";
    41.             }, array_keys($data), array_values($data)));
    42.             $sql = "UPDATE {$table} SET {$set} WHERE " . implode(' AND ', array_map(function($key) use ($where) {
    43.                 return "`{$key}`=?";
    44.             }, array_keys($where)));
    45.             $types = str_repeat('s', count($data) + count($where));
    46.             $stmt = $conn->prepare($sql);
    47.             $mergedData = array_merge(array_values($data), array_values($where));
    48.             $stmt->bind_param($types, ...$mergedData);
    49.             break;
    50.             
    51.         case 'delete':
    52.             $sql = "DELETE FROM {$table} WHERE " . implode(' AND ', array_map(function($key) use ($where) {
    53.                 return "`{$key}`=?";
    54.             }, array_keys($where)));
    55.             $types = str_repeat('s', count($where));
    56.             $stmt = $conn->prepare($sql);
    57.             $stmt->bind_param($types, ...array_values($where));
    58.             break;
    59.             
    60.         default:
    61.             return false;
    62.     }
    63.    
    64.     // 执行查询或操作
    65.     $result = $stmt->execute();
    66.    
    67.     // 根据操作类型返回结果
    68.     if ($action === 'select') {
    69.         return $stmt->get_result();
    70.     } else {
    71.         return $stmt->affected_rows;
    72.     }
    73. }
    复制代码

    使用方法

    1. // 示例用法
    2. $table = 'plugins';
    3. $data = ['plugin_name' => '飞凤互联'];
    4. $where = ['id' => 1];

    5. // 查询
    6. $result = dbOperation($conn, $db_prefix, 'select', $table, [], $where);
    7. if ($result) {
    8.     while ($row = $result->fetch_assoc()) {
    9.         // 处理结果
    10.     }
    11. }

    12. // 插入
    13. $data = ['plugin_name' => 'new_plugin', 'status' => 'active'];
    14. $insertResult = dbOperation($conn, $db_prefix, 'insert', $table, $data);
    15. if ($insertResult) {
    16.     echo "插入成功,影响了{$insertResult}行";
    17. }

    18. // 更新
    19. $data = ['status' => 'inactive'];
    20. $updateResult = dbOperation($conn, $db_prefix, 'update', $table, $data, $where);
    21. if ($updateResult) {
    22.     echo "更新成功,影响了{$updateResult}行";
    23. }

    24. // 删除
    25. $deleteResult = dbOperation($conn, $db_prefix, 'delete', $table, [], $where);
    26. if ($deleteResult) {
    27.     echo "删除成功,影响了{$deleteResult}行";
    28. }
    复制代码


    回复

    使用道具 举报

    网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

    GMT+8, 2024-12-31 01:31

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表