php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: php开发实战分析(8):mysql类库的操作高级使用API开发(字段操作、权限分配、日期格式、跨表查询,数据分表)

前言

在使用mysql类库时,需要封装 PHP 的 MySQL 开发 API 接口,为了设计出更加可靠、安全和易于使用的接口,以下是一些常见的注意事项:

  1. 参数验证和过滤:确保对传入 API 接口的参数进行严格的验证和过滤,以防止 SQL 注入攻击和其他安全漏洞。可以使用 PHP 的过滤器函数(如filter_var)或者利用预定义的过滤器(如FILTER_SANITIZE_STRING)来验证和过滤参数。
  2. 错误处理与异常管理:编写健壮的错误处理和异常管理机制,检查每个数据库操作的返回值或抛出相应的异常。在处理异常时,提供有用的错误信息,以便于追踪和调试问题。
  3. SQL 查询安全性:对于动态构建的 SQL 查询,尽量使用参数化查询(prepared statements)来防止 SQL 注入攻击。参数化查询能够在发送给数据库服务器之前对参数进行处理和转义,从而有效地阻止恶意用户对数据库进行攻击。
  4. 数据库连接管理:保证数据库连接的有效管理,避免频繁的连接和断开操作对性能造成的负面影响。可以使用连接池、持久连接等技术来优化数据库连接的性能和资源利用。
  5. 错误日志记录:将数据库操作过程中的错误信息进行记录和追踪,以便能够快速定位问题并进行处理。可以使用 PHP 的错误日志记录函数(如error_log)将错误信息写入日志文件或发送到指定的日志系统。
  6. 安全性考虑:避免在 API 接口中直接暴露敏感信息,如数据库用户名、密码等。尽量采用配置文件等安全方式进行敏感信息的存储和引用。
  7. 跨库和跨表兼容性:尽量编写通用的 API 接口,能够适应不同的数据库和表结构。考虑到不同数据库之间的差异,使用标准化的 SQL 语法和数据类型,以确保 API 在不同环境中的兼容性。
  8. 性能优化:对数据库操作进行性能优化,避免频繁的查询或更新操作。可以使用缓存技术、索引优化、批量操作等方法来提高数据库的性能和响应速度。
  9. API 接口设计规范:按照良好的 API 设计规范,使用符合 RESTful 风格的 URL、清晰的接口命名和语义化的 HTTP 方法。提供一致性的接口返回格式,如 JSON 或 XML,以方便客户端的调用和解析。
  10. 单元测试和文档化:通过编写单元测试案例来验证 API 接口的正确性和稳定性。并且提供清晰、详细的文档,描述 API 接口的使用方法、参数说明、返回值等,以方便其他开发者使用。

一、新增字段

  • checkAdminAuth($_COOKIE['admin_roles'], '0', 1); 权限限制
public function upAlter()
    {
        checkAdminAuth($_COOKIE['admin_roles'], '0', 1);//超管权限
        global $db;
        dbc();
        $sql = "ALTER TABLE " . $db->table('bank_record') . " ADD `inv_add_tel` varchar(255) DEFAULT NULL COMMENT '地址电话';";
        $sql .= "ALTER TABLE " . $db->table('bank_record') . " ADD `inv_bank_account` VARCHAR(255) DEFAULT NULL COMMENT '银行账户';";
        $sql .= "ALTER TABLE " . $db->table('bank_record') . " ADD `bank_source` INT(2) DEFAULT 0 COMMENT '客户端来源0手机1PC';";
        $db->query($sql);
        $res["data"] = '新增自动,Status:OK';
        die(json_encode_lockdata($res));
    }


二、新增数据表

public function creatTable()
     {
         checkAdminAuth($_COOKIE['admin_roles'], '0', 1);//超管权限
         global $db, $res;
         dbc();
         //读取管理员信息
         $sql = "CREATE TABLE IF NOT EXISTS `po_certificate` (
         `cert_id` int(11) NOT NULL AUTO_INCREMENT,
         `cert_name` varchar(32) DEFAULT NULL COMMENT '姓名',
         `cert_user_no` varchar(32) DEFAULT NULL COMMENT '身份证号',
         `cert_no` varchar(64) DEFAULT NULL COMMENT '证书编号',
         `cert_time` varchar(64) DEFAULT NULL COMMENT '获取时间',
         `course_name1` varchar(255) DEFAULT NULL COMMENT '技术目录1',
         `course_name2` varchar(255) DEFAULT NULL COMMENT '技术目录2',
         `course_name3` varchar(255) DEFAULT NULL COMMENT '技术目录3',
         `course_name4` varchar(255) DEFAULT NULL COMMENT '技术目录4',
         `cert_user_phone` varchar(32) DEFAULT NULL COMMENT '手机号码',
         PRIMARY KEY (`cert_id`)
         ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='电子证书';";
         $db->query($sql);
         $res["data"] = '创建成功';
         die(json_encode_lockdata($res));
     }


三、删除指定记录

  • get_param('sign_id');传递参数,安全过滤;
 public function delSign()
      {
          checkAdminAuth($_COOKIE['admin_roles'], '0', 1);//超管权限
          global $db;
          dbc();
          @$sign_id = get_param('sign_id');
          if ($sign_id == "") {
              die("参数错误");
          }
          $db->delete('sign_2023', 'sign_id in (' . $sign_id . ')');
          $res["data"] = '更新成功';
          die(json_encode_lockdata($res));
      }


三、批量同步交易信息

 public function synsBank()
        {
            checkAdminAuth($_COOKIE['admin_roles'], '0', 1);//超管权限
            global $db, $res;
            dbc();
            //读取管理员信息
            $sql = "select record_id,from_user_id,from_user_name FROM " . $db->table('bank_record') . " WHERE user_card = '' OR user_card IS NULL";
            $sql .= " AND course_id = 14 ORDER BY record_id DESC LIMIT 200";
            $row = $db->queryall($sql);
            //更新入库;
            for ($i = 0; $i < count($row); $i++) {
                $row_user = $db->fetch('user', 'user_card', array('user_id' => $row[$i]['from_user_id']), ' user_id DESC');
                $db->update('bank_record', array('user_card' => $row_user['user_card']), array('record_id' => $row[$i]['record_id']));
            }
            $res["data"] = '更新成功';
            die(json_encode_lockdata($res));
        }


四、修改用户密码

  public function updatePwd()
    {
        global $db, $res;
        dbc();
        @$user_pwd = get_param("user_pwd");
        $new_pwd = md5(rand(111111, 999999) . "/@W12");
        $db->update('user', array('user_pwd' => $new_pwd), array("user_pwd" => $user_pwd));
        $res['msg'] = "OK";
        $res["data"] = "密码更新成功.";
        die(json_encode_lockdata($res));
    }


五、获取用户信息

    public function getPwd()
    {
        global $db, $res;
        dbc();
        @$user_id = get_param("user_id");
        $sql = "select user_pwd FROM " . $db->table('user');
        if ($user_id != "") {
            $sql .= " WHERE user_id =" . $user_id;
        }
        $sql .= " ORDER BY user_id DESC";
        $row = $db->query($sql);
        $res['msg'] = "OK";
        $res["data"] = $row;
        die(json_encode_lockdata($res));
    }


六、更新多个用户表

    /*07.更新城市列表-1*/
    public function updateCity()
    {
        global $db, $res;
        dbc();
        @$user_area = get_param("user_area");
        @$old_user_area = get_param("old_user_area");
        $db->update('project', array('user_area' => $user_area), array("user_area" => $old_user_area));
        $db->update('user', array('user_area' => $user_area), array("user_area" => $old_user_area));
        $db->update('verify', array('user_area' => $user_area), array("user_area" => $old_user_area));
        $db->update('expert', array('user_area' => $user_area), array("user_area" => $old_user_area));
        $res['msg'] = "OK";
        $res["data"] = $user_area . "-信息更新成功.";
        die(json_encode_lockdata($res));
    }



@漏刻有时

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
26天前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
|
2月前
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。
|
19天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
21天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
161 11
|
2月前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
2月前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
16天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
58 13
MySQL的安装&数据库的简单操作
|
22天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
3天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
12 2
下一篇
无影云桌面