classDB{//属性

private $host;private $port;private $user;private $pass;private $dbname;private $charset;private $prefix; //表前缀

private $link; //连接资源(连接数据库,一般会返回一个资源,所以需要定义一个link属性)

//构造方法(作用:为了初始化对象的属性),会被自动调用

/** @param1 array $arr,默认为空,里面是一个关联数组,里面有7个元素

* array('host' => 'localhost','port' => '3306');*/

public function __construct($arr = array()){//初始化

$this->host = isset($arr['host']) ? $arr['host'] : 'localhost';//先判断是否有自己的host,如果有就用自己的host,否则就使用默认的localhost

$this->port = isset($arr['port']) ? $arr['port'] : '3306';$this->user = isset($arr['user']) ? $arr['user'] : 'root';$this->pass = isset($arr['pass']) ? $arr['pass'] : 'root';$this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'mydatabase';$this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';$this->prefix = isset($arr['prefix']) ? $arr['prefix'] : '';//连接数据库(类是要操作数据库,因此要连接数据库)

$this->connect();//设置字符集

$this->setCharset();//选择数据库

$this->setDbname();

}/** 连接数据库*/

private functionconnect(){//mysql扩展连接

$this->link = mysql_connect($this->host . ':' . $this->port,$this->user,$this->pass);//判断结果

if(!$this->link){//结果出错了

//暴力处理,如果是真实线上项目(生产环境)必须写入到日志文件

echo '数据库连接错误:
';echo '错误编号' . mysql_errno() . '
';echo '错误内容' . mysql_error() . '
';exit;

}

}/** 设置字符集*/

private functionsetCharset(){//设置

$this->db_query("set names {$this->charset}");

}/** 选择数据库*/

private functionsetDbname(){$this->db_query("use {$this->dbname}");

}/** 增加数据

* @param1 string $sql,要执行的插入语句

* @return boolean,成功返回是自动增长的ID,失败返回FALSE*/

public function db_insert($sql){//发送数据

$this->db_query($sql);//成功返回自增ID

return mysql_affected_rows() ? mysql_insert_id() : FALSE;

}/** 删除数据

* @param1 string $sql,要执行的删除语句

* @return Boolean,成功返回受影响的行数,失败返回FALSE*/

public function db_delete($sql){//发送SQL

$this->db_query($sql);//判断结果

return mysql_affected_rows() ? mysql_affected_rows() : FALSE;

}/** 更新数据

* @param1 string $sql,要执行的更新语句

* @return Boolean,成功返回受影响的行数,失败返回FALSE*/

public function db_update($sql){//发送SQL

$this->db_query($sql);//判断结果

return mysql_affected_rows() ? mysql_affected_rows() : FALSE;

}/** 查询:查询一条记录

* @param1 string $sql,要查询的SQL语句

* @return mixed,成功返回一个数组,失败返回FALSE*/

public function db_getRow($sql){//发送SQL

$res = $this->db_query($sql);//判断返回

return mysql_num_rows($res) ? mysql_fetch_assoc($res) : FALSE;

}/** 查询:查询多条记录

* @param1 string $sql,要查询的SQL语句

* @return mixed,成功返回一个二维数组,失败返回FALSE*/

public function db_getAll($sql){//发送SQL

$res = $this->db_query($sql);//判断返回

if(mysql_num_rows($res)){//循环遍历

$list = array();//遍历

while($row = mysql_fetch_assoc($res)){$list[] = $row;

}//返回

return $list;

}//返回FALSE

return FALSE;

}/** mysql_query错误处理

* @param1 string $sql,需要执行的SQL语句

* @return mixed,只要语句不出错,全部返回*/

private function db_query($sql){//发送SQL

$res = mysql_query($sql);//判断结果

if(!$res){//结果出错了

//暴力处理,如果是真实线上项目(生产环境)必须写入到日志文件

echo '语句出现错误:
';echo '错误编号' . mysql_errno() . '
';echo '错误内容' . mysql_error() . '
';exit;

}//没有错误

return $res;

}//__sleep方法

public function__sleep(){//返回需要保存的属性的数组

return array('host','port','user','pass','dbname','charset','prefix');

}//__wakeup方法

public function__wakeup(){//连接资源

$this->connect();//设置字符集和选中数据库

$this->setCharset();$this->setDbname();

}/** 获取完整的表名*/

protected functiongetTableName(){//完整表名:前缀+表名

return $this->prefix . $this->table;

}

}//这个DB类,一般不写析构(不释放资源)

php mysql db封装类_封装自己的DB类(PHP)相关推荐

  1. mysql php 封装类_市面上几款常见的微信开发框架对比(PHP和JAVA)

    正在学习微信开发或者正在开发微信项目的程序猿们看过来,小编为你们整理了几款目前知名度较高的微信开发框架平台,希望能对大家有所帮助! 小编分别从两种(PHP和java)不同语言分别给大家介绍了几款微信开 ...

  2. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

  3. 封装mysql数据库操作系统_封装MySQL的单例,连接数据库并对数据进行增删改查操作...

    //私有的构造方法用来阻止在类的外部实例化private function __construct($param){$this->initData($param);$this->conne ...

  4. PHP复习_封装万能的PDO类

    以前学习过PDO,可是在公司使用项目的时候发现有点忘记了,于是花了点时间对PDO再次回顾,我的代码写的很详细了,在注释上有参考案例,有需要的可以在这里下载 链接:https://pan.baidu.c ...

  5. php 发短信的类,[php封装类]PHP封装发送短信类!

    /** * 手机短信发送 * 需要开启 Crul * 分钟配额为:1000 次/分钟 . 超过分钟配额服务禁用. * 向同一手机号发送短信, 最小时间间隔为15 秒. * 一次最多都只能发65个汉字( ...

  6. archer mysql源码_自动化运维工具inception+archer

    #yum install cmake bison  ncurses-devel gcc gcc-c++  openssl-devel 下载,解压   wget https://github.com/m ...

  7. mysql kingshard 扩容_如何用Go打造一个高性能mysql proxy

    kingshard架构设计和功能实现 kingshard(https://github.com/flike/kingshard)开源有一段时间了,有些热心的用户发邮件来咨询kingshard的设计和实 ...

  8. Python操作mySql数据库封装类

    这是自己在做项目过程中,整理封装的操作mysql数据库封装类,自己可以修改下使用,节省大量时间. myGlobal.py # -*- coding: utf-8 -*-global globalLis ...

  9. linux otl 连接mysql_Linux下用OTL操作MySql(包括自己封装的类库及示例代码下载)...

    (1)首先安装MySql数据库服务: (2)安装navicat数据库客户端: 安装步骤:傻瓜安装,选择字符集的时候自己根据情况选择gbk2312,或者utf-8(一般涉及到网络传输或者跨平台,比如和j ...

最新文章

  1. 【转】WinForm窗体间数据交互的方法
  2. redis常用配置项
  3. Java集合中HashSet的实现原理
  4. Android 混淆详解
  5. matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现
  6. 2022年中国隐私计算行业研究报告
  7. linux和安卓交互,Android中webview和js之间的交互及注意事项
  8. 【推荐精读】从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现
  9. java int stack_java stack总结
  10. 多重加载Bean方式
  11. 中国气象数据要注册或交钱才给,咱们就去美国下载免费数据
  12. EN 13329强化木地板规范要求和试验方法
  13. (实测)天猫商城抢购茅台脚本
  14. ArcGIS根据矢量图层范围裁剪影像
  15. 适合糖友增强饱腹感的一些主食
  16. 不会“思维”只会“批判”,谨防网络舆论“怨妇化”
  17. android 怎么封装方法,开发那点事(九)安卓开发,封装常用方法,工作用
  18. 医疗电子方案——血压计方案
  19. WPS表格 下拉列表+图表 实现动态显示图表
  20. 清华教授极力推荐的三本入门学习Python书籍

热门文章

  1. 虚拟机安装中文输入法
  2. HTML头部元素标签
  3. (49)逆向分析KiSystemService/KiFastCallEntry调用内核函数部分(SST,SSDT,SSPT)
  4. 【生活】SSD 接口的分类
  5. 【Clickhouse】Dockerfile 文件,加入 mysql
  6. 【PAT乙级】1031 查验身份证 (15 分)
  7. 【PAT乙级】 1018 锤子剪刀布 (20 分)
  8. 2.2.2 进程调度的 时机 切换与过程 调度方式
  9. 项目: 互动粒子仿真
  10. 拉索检测机器人_昌都斜拉索锈蚀检测系统,斜拉索检测机器人推荐