php mysql db封装类_封装自己的DB类(PHP)
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)相关推荐
- mysql php 封装类_市面上几款常见的微信开发框架对比(PHP和JAVA)
正在学习微信开发或者正在开发微信项目的程序猿们看过来,小编为你们整理了几款目前知名度较高的微信开发框架平台,希望能对大家有所帮助! 小编分别从两种(PHP和java)不同语言分别给大家介绍了几款微信开 ...
- php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...
- 封装mysql数据库操作系统_封装MySQL的单例,连接数据库并对数据进行增删改查操作...
//私有的构造方法用来阻止在类的外部实例化private function __construct($param){$this->initData($param);$this->conne ...
- PHP复习_封装万能的PDO类
以前学习过PDO,可是在公司使用项目的时候发现有点忘记了,于是花了点时间对PDO再次回顾,我的代码写的很详细了,在注释上有参考案例,有需要的可以在这里下载 链接:https://pan.baidu.c ...
- php 发短信的类,[php封装类]PHP封装发送短信类!
/** * 手机短信发送 * 需要开启 Crul * 分钟配额为:1000 次/分钟 . 超过分钟配额服务禁用. * 向同一手机号发送短信, 最小时间间隔为15 秒. * 一次最多都只能发65个汉字( ...
- archer mysql源码_自动化运维工具inception+archer
#yum install cmake bison ncurses-devel gcc gcc-c++ openssl-devel 下载,解压 wget https://github.com/m ...
- mysql kingshard 扩容_如何用Go打造一个高性能mysql proxy
kingshard架构设计和功能实现 kingshard(https://github.com/flike/kingshard)开源有一段时间了,有些热心的用户发邮件来咨询kingshard的设计和实 ...
- Python操作mySql数据库封装类
这是自己在做项目过程中,整理封装的操作mysql数据库封装类,自己可以修改下使用,节省大量时间. myGlobal.py # -*- coding: utf-8 -*-global globalLis ...
- linux otl 连接mysql_Linux下用OTL操作MySql(包括自己封装的类库及示例代码下载)...
(1)首先安装MySql数据库服务: (2)安装navicat数据库客户端: 安装步骤:傻瓜安装,选择字符集的时候自己根据情况选择gbk2312,或者utf-8(一般涉及到网络传输或者跨平台,比如和j ...
最新文章
- 【转】WinForm窗体间数据交互的方法
- redis常用配置项
- Java集合中HashSet的实现原理
- Android 混淆详解
- matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现
- 2022年中国隐私计算行业研究报告
- linux和安卓交互,Android中webview和js之间的交互及注意事项
- 【推荐精读】从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现
- java int stack_java stack总结
- 多重加载Bean方式
- 中国气象数据要注册或交钱才给,咱们就去美国下载免费数据
- EN 13329强化木地板规范要求和试验方法
- (实测)天猫商城抢购茅台脚本
- ArcGIS根据矢量图层范围裁剪影像
- 适合糖友增强饱腹感的一些主食
- 不会“思维”只会“批判”,谨防网络舆论“怨妇化”
- android 怎么封装方法,开发那点事(九)安卓开发,封装常用方法,工作用
- 医疗电子方案——血压计方案
- WPS表格 下拉列表+图表 实现动态显示图表
- 清华教授极力推荐的三本入门学习Python书籍
热门文章
- 虚拟机安装中文输入法
- HTML头部元素标签
- (49)逆向分析KiSystemService/KiFastCallEntry调用内核函数部分(SST,SSDT,SSPT)
- 【生活】SSD 接口的分类
- 【Clickhouse】Dockerfile 文件,加入 mysql
- 【PAT乙级】1031 查验身份证 (15 分)
- 【PAT乙级】 1018 锤子剪刀布 (20 分)
- 2.2.2 进程调度的 时机 切换与过程 调度方式
- 项目: 互动粒子仿真
- 拉索检测机器人_昌都斜拉索锈蚀检测系统,斜拉索检测机器人推荐