目录
Db类的介绍
首页 后端开发 php教程 PHP实现的mysql数据库操作类

PHP实现的mysql数据库操作类

Jun 23, 2016 pm 01:09 PM

数据库操作类是由 迹忆博客提供

Db类的介绍

1.采用单例设计模式 该类采用单例设计模式,保证了该类实例对象的唯一性 实现方式

public static $_instance; //静态属性,存储实例对象
登录后复制
/** * 私有化构造函数 这是构造单例设计模式必须的一步 */private function __construct($config=''){    $this->config = $this->parseConfig($config);}
登录后复制
/** * 实例化对象 采用静态公共方法 */public static function Instance(){    if(self::$_instance instanceof self){        return self::$_instance;    }    self::$_instance = new self;    return self::$_instance;}
登录后复制

2.功能介绍

首先该类支持主从复制数据库的连接,支持一主多从模式的数据库

当线程正在连接的一台从服务器宕机时,程序会自动重新连接其他正常的从服务器

其次当新增数据到数据表中时,该类支持一次添加多条数据,并且这多条数据可以是不同的表

可以通过addMore函数的第二个参数来指明是多表插入,其实现核心代码如下

/** * 一次性插入多条数据,支持不同表的插入 * 当使用多表插入功能时需要在第二个参数中指定 $options['multitable'] = true * 并且$data的格式为 * array( * '表名1'=>array(array(),array()), * '表名2'=>array(array(),array()) * ) * @param array $data * @param array $options * @return boolean */ public function addMore($data = array(),$options = array()){       if(isset($options['table']))           $this->table($options['table']);       if(!is_array($data)) return false;       /* * 开启事务处理多条语句 */       $this->startTransaction();       foreach($data as $key=>$val){            //查看是否是多表插入            if(isset($options['multitable'])&&$options['multitable']){                /* * 多表插入,则$key为表名,$val为要插入的数据 * 使用递归的方式再次对多条数据进行插入 */                $res = $this->addMore($val,array('table'=>$key));            }else{                //单表插入                $res = $this->add($val);            }            if(!$res){                  //如果有一条数据插入失败,则回滚事务,撤销所有的操作                $this->rollback();                return false;            }       }       //如果所有插入操作无误,则提交事务       $this->commit();       return true;}
登录后复制

同时支持事务处理,当多条插入数据之中的一条数据插入失败,可通过事务回滚撤销其它插入的数据

3.其它支持正常的增删改查

下面介绍使用到的函数的用法

1)实例化该对象

使用该类需要先实例化该类的对象

$obj = Db::Instance();
登录后复制

2) 查找数据

查找数据用到的函数有 select()和find()两个函数

select()函数查找多条数据

使用实例

$res = $obj->field('id,name')->where('id > 10')->select();
登录后复制

返回值:

查找失败 返回 false 查找成功 返回多条数据

array(    array('id'=>11,'name'=>'迹忆博客1'),    array('id'=>12,'name'=>'迹忆博客2'),)
登录后复制

find()是返回一条数据

$res = $obj->field('id,name')->where('id=10')->find()
登录后复制

返回值

查找失败 返回 false 查找成功 返回一条数据

array('id'=>10,'name'=>'迹忆博客')
登录后复制

3)添加数据

添加数据有两个函数 add($data,$options) 和addMore($data,$options)

add($data.$options)
登录后复制

$data 要添加的数据

数据格式

array('id'=>13,'name'=>'onmpw')
登录后复制

$options 可选参数

可指定表名 格式为 array('table'=>'表名') 此处指定表名的优先级最高

返回值

插入失败 返回 false 插入成功 返回插入的条数

addMore($data,$options)
登录后复制

可以通过$options选项指定是夺标插入还是单表插入

'multitable'=>true   多表插入  如果设定此项则默认是单表插入  多表插入$data的数据格式$data = array(   'tablename1'=>array(     array('id'=>20,'name'=>'迹忆博客1'),    array('id'=>21,'name'=>'迹忆博客2'),    array('id'=>22,'name'=>'迹忆博客3')   ),   'tablename2'=>array(     array('id'=>20,'name'=>'迹忆博客1','url'=>'www.onmpw.com'),    array('id'=>21,'name'=>'迹忆博客2','url'=>'www.onmpw.com'),    array('id'=>22,'name'=>'迹忆博客3','url'=>'www.onmpw.com')   ))
登录后复制
'multitable'=>false / 不设定此项 单表插入 $data的数据格式为    $data = array(    array('id'=>31,'name'=>'迹忆博客1','url'=>'www.onmpw.com'),    array('id'=>32,'name'=>'迹忆博客2','url'=>'www.onmpw.com'),    array('id'=>33,'name'=>'迹忆博客3','url'=>'www.onmpw.com'),    )
登录后复制

'table'=>'表名' 指定插入数据的数据表名,此项在单表插入时有效,并且较之于其他指定表名的方式优先级高

返回值

插入失败 返回 false 插入成功返回插入的条数

4)修改 update($data,$options)

修改数据函数

$data 要修改的数据,格式为

array('name'=>'onmpw','url'=>'http://onmpw.com');
登录后复制

$options 可以指定表名

'table'=>'表名'

返回值

更新失败 返回 false 更新成功返回更新的条数

5)删除 delete($options)

$options 可以指定表名

'table'=>'表名' 此种指定表名的优先级最高

实例

$res = $obj->table('repl')->where('id=10')->delete(); //删除repl表下id=10的记录$res = $obj->table('repl')->where('id=13')->delete(array('table'=>'test'));  //删除test表下id=13的记录
登录后复制

等价于

$res = $obj->where('id=13')->delete(array('table'=>'test'))
登录后复制

返回值

删除失败 返回false 删除成功返回 删除的记录条数

6) table($str) 函数 指定表名

$obj->table('test')  //指定当前操作的表为test表
登录后复制

返回值为 当前对象 object

7) where($where) 指定where条件

$where 可以是字符串也可以是数组

字符串

$obj->table('test')->where("name='迹忆博客',url='www.onmpw.com'");
登录后复制

数组

$obj->table('test')->where(array('name'=>'迹忆博客','url'=>'www.onmpw.com'))
登录后复制

返回值为 当前对象 object

8)field($field) 指定查询的字段名称

$obj->table('test')->field('name,url')->select();
登录后复制

如果在查询的时候不适用field()函数指定字段,默认会查询该表的所有字段

返回值为 当前对象 object

9) orderby($str) 指定按照那个字段排序

$obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id DESC')->select();
登录后复制

按照id 降序排列

$obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id')->select();
登录后复制

也可以不指定是降序或者升序

返回值为 当前对象 object

10) limit($limit)

$limt 可以为字符串也可以为数组

数组

array(page,listrows)
登录后复制

page 指定当前的页数 listrows指定每页取出的条数

字符串

10,12

10表示从第十条记录开始取,12表示取出的条数

$res = $obj->table('test')->field('id,name,url')->where("name='迹忆博客'")->orderby('id DESC')->limit('10,12')->select()
登录后复制

返回值为 当前对象 object

11)sql($sql) 执行指定的sql语句

$sql = "select name,url from test where name='迹忆博客'";$res = $obj->sql($sql);
登录后复制

返回执行的结果

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章讨论了框架中的基本安全功能,以防止漏洞,包括输入验证,身份验证和常规更新。

如何用PHP的cURL库发送包含JSON数据的POST请求? 如何用PHP的cURL库发送包含JSON数据的POST请求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

自定义/扩展框架:如何添加自定义功能。 自定义/扩展框架:如何添加自定义功能。 Mar 28, 2025 pm 05:12 PM

本文讨论了将自定义功能添加到框架上,专注于理解体系结构,识别扩展点以及集成和调试的最佳实践。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

See all articles