MySQL数据库操作类(PHP实现,支持连贯操作)

php 如何实现数据库操作类的封装? 在上面的示例中,我们添加了四个常见的数据库操作方法:insert()、update()、delete()和select()。MySQLi(MySQL improved):是MySQL的改进版扩展,提供了面向对象和面向过程的两种API,支持多种MySQL特性和新功能,如事务、存储过程、预处理语句等。同时,也可以在类中添加更多的方法,用于处理其他数据库操作,例如插入、更新和删除数据等操作。当封装数据库操作类时,需要考虑到常见的数据库操作,包括插入、更新、删除、查询等。 阅读详情

使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连接数据库,数据库的增删改查等数据操作都非常的nice,同时支持连贯操作,对于那些不习惯写sql语句的同学真是大大的便利。(注:sql还是很重要的,不要因为用了框架就把原先的忘了)。
而在笔者使用php操作redis实现后台任务的过程中,也想要借助这种便利,但无奈redis操作单独的类,直接访问其中的controller文件的话,总是会提示M方法失败,导致此模型方法不能使用。万般无奈之下,只能自己来实现一下了。
借助PHP的mysqli相关函数,进行MySQL数据库操作类的实现。此程序中提供数据库的操作包括:数据库的连接,数据库的选择,数据库用户的选择,相应数据库中所有数据表名的查看;数据表的操作包括:相应的数据表中字段全部属性的查看,数据表的增删改查操作,数据表查询、插入的连贯操作等

<?php
/**
 * Author: helen
 * CreateTime: 2016/4/12 20:14
 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数)
 */
class Database{
    
    

    //MySQL主机地址
    private $_host;
    //MySQL用户名
    private $_user;
    //MySQL用户密码
    private $_password;
    //指定数据库名称
    private $_database;
    //MySQL数据库端口号
    private $_port;
    private $_socket;
    //当前数据库对象
    private $_dbObj;
    //数据库表
    private $_table;
    //数据库表对象
    private $_tableObj;
    // 最近错误信息
    protected $error            =   '';
    // 数据信息
    protected $data             =   array();
    // 查询表达式参数
    protected $options          =   array();
    protected $_validate        =   array();  // 自动验证定义
    protected $_auto            =   array();  // 自动完成定义
    protected $_map             =   array();  // 字段映射定义
    protected $_scope           =   array();  // 命名范围定义
    // 链操作方法列表
    protected $methods          =   array('strict','order','alias','having','group','lock','distinct','auto','filter','validate','result','token','index','force');

    /**
     * Database类初始化函数
     * 取得DB类的实例对象 字段检查
     * @access public
     * @param string $host MySQL数据库主机名
     * @param string $user MySQL数据库用户名
     * @param string $password MySQL数据库密码
     * @param string $database 指定操作的数据库
     * @return mixed  数据库连接信息、错误信息
     */
    public function __construct($host,$user,$passowrd,$database,$port=3306){
    
    
        $this->_initialize();
        if(!isset($host)||!isset($user)||!isset($passowrd)||!isset($database)){
            return false;
        }else{
            $this->_host     = $host;
            $this->_user     = $user;
            $this->_password = $passowrd;
            $this->_database = $database;
            $this->_port     = $port;
            $_dbObj = new mysqli($host,$user,$passowrd,$database,$port);
            if($_dbObj->connect_errno){
                $this->error = $_dbObj->connect_error;
                return false;
            }else{
                $this->_dbObj = $_dbObj;
                return $this;
            }
        }
    }
    /**
     * 错误信息函数
     * 返回数据库操作过程中最后一次执行时的错误信息
     * @access public
     * @return mixed  数据库连接错误信息(正常返回'')
     */
    public function error(){
    
    
        return $this->error;
    }
    // 回调方法 初始化模型
    protected function _initialize() {
    
    }
    /**
     * 设置数据对象的值
     * @access public
     * @param string $name 名称
     * @param mixed $value 值
     * @return void
     */
    public function __set($name,$value) {
    
    
        // 设置数据对象属性
        $this->data[$name] = $value;
    }

    /**
     * 获取数据对象的值
     * @access public
     * @param string $name 名称
     * @return mixed
     */
    public function __get($name) {
    
    
        return isset($this->data[$name])?$this->data[$name]:null;
    }

    /**
     * 检测数据对象的值
     * @access public
     * @param string $name 名称
     * @return boolean
     */
    public function __isset($name) {
    
    
        return isset($this->data[$name]);
    }

    /**
     * 销毁数据对象的值
     * @access public
     * @param string $name 名称
     * @return void
     */
    public function __unset($name) {
    
    
        unset($this->data[$name]);
    }
    /**
     * 利用__call方法实现一些特殊的方法(对于调用类中不存在方法的解决方案)
     *
PHP自定义MySQL类实战:深入数据库操作 构建一个强大的自定义MySQL类可以大大提高代码的可重用性、可维护性以及开发效率。本章节将深入探讨自定义MySQL类的设计思想、架构以及如何实现关键功能细节。开发过程中,数据库操作是不可或缺的一部分。随着项目规模的扩大,直接在业务逻辑中编写SQL语句会使得代码变得冗长且难以维护。因此,构建一个自定义的MySQL类来管理数据库操作,可以将数据库逻辑与业务逻辑分离,提升代码的模块化水平。这种设计模式不仅可以提高代码的可重用性,还能够使得数据库操作更加集中和规范化。 阅读详情

相关推荐

php中mysql数据库操作类

php中mysql数据库操作类

瑞芯微RK3576开发板实战:6TOPS NPU如何加速你的AIoT项目(附性能测试)

本文以瑞芯微RK3576开发板为核心,深入探讨其6TOPS NPU在AIoT项目中的实战应用。通过详细的性能测试对比,展示了NPU如何将AI模型推理速度提升15倍以上,并大幅降低CPU负载。文章涵盖从环境搭建、模型转换优化到多屏异显与系统级调优的全流程,为开发者提供了将硬件算力转化为实际项目加速效果的完整指南。

oauth7security的博客 820

银河麒麟V10SP1实战:5步搞定AD域登录(附Samba+Winbind配置详解)

本文提供银河麒麟V10 SP1操作系统无缝集成Windows AD域的实战指南。文章深入解析了Samba、Winbind与Kerberos三大核心组件的协作原理,并详细阐述了从环境准备、软件包安装、配置文件定制到执行加域及排错的全流程。特别针对2403等新版本提供了关键配置差异与避坑要点,旨在帮助企业运维人员实现高效、稳定的域环境登录与管理。

weixin_29269441的博客 293

MacBook Pro 合盖省电终极配置:pmset 5条命令实现一夜掉电<1%

本文详细介绍了如何通过5条pmset终端命令优化MacBook Pro的合盖休眠设置,实现一夜掉电<1%的极致省电效果。针对M系列芯片的特性,文章解析了MacOS的休眠机制,并提供电池模式与电源模式的差异化配置方案,帮助用户显著提升续航表现。

weixin_33824385的博客 477

控制障碍函数(Control Barrier Function,CBF) 一、定义

介绍控制障碍函数

Lyajpunov的博客 2万+

【雷达】基于matlab合成孔径雷达干涉测量(InSAR)时序分析【含Matlab源码 9037期】

合成孔径雷达干涉测量(InSAR)时序分析 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 159

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4260

PyTorch实战(14)——图注意力网络(Graph Attention Network,GAT)

本节介绍了图注意力网络 (Graph Attention Network, GAT) 在节点分类任务中的应用。相比图卷积网络 (GCN) 的平均聚合机制,GAT 通过引入注意力机制,能够为不同邻居节点分配差异化权重,从而更精准地捕捉图结构信息。实验表明,GAT 在 CiteSeer 数据集上的分类准确率达到 71.1%,较 GCN 提升 2.5 个百分点。可视化结果显示,GAT 学习到的节点表征具有更好的类别区分度。这验证了注意力机制在图数据建模中的有效性,为处理复杂图结构任务提供了更优解决方案。

盼小辉丶的博客 3557

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory解决方案

本文主要介绍了ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 经典排序算法的PHP实现类
下一篇: 邮件发送(PHP实现)
helencoder
博客等级 码龄11年 43粉丝 59原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值