您好,欢迎访问一九零五行业门户网

封装自己的DB类(PHP),封装db类php_PHP教程

封装自己的db类(php),封装db类php封装一个db类,用来专门操作数据库,以后凡是对数据库的操作,都由db类的对象来实现。这样有了自己的db类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便!
1.封装一个db类。一个类文件应该只有一个类,其他的内容全部都没有。类文件的命名规则:类名.class.php
下面是创建db类的代码:
'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 function connect(){ //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 function setcharset(){ //设置 $this->db_query(set names {$this->charset}); } /* * 选择数据库 */ private function setdbname(){ $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 function gettablename(){ //完整表名:前缀+表名 return $this->prefix . $this->table; } }//这个db类,一般不写析构(不释放资源)
2.使用db类,但是如果要使用某一个类来创建对象,必须要保证该类已经被加载到代码区里。可以使用一个魔术函数来实现对类的自动加载
自动加载:当一个脚本文件在执行某些语句的时候(实例化)需要去代码区里寻找对应的类,如果找不到会通过自动加载函数来将对应的类文件进行加载。
魔术函数:__autoload()
比如我们在index.php页面中需要使用db类,那么我们就直接调用即可,具体代码如下:
'mydatabase'));
http://www.bkjia.com/phpjc/1103327.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1103327.htmltecharticle封装自己的db类(php),封装db类php 封装一个db类,用来专门操作数据库,以后凡是对数据库的操作,都由db类的对象来实现。这样 有了自己...
其它类似信息

推荐信息