PHP 数据库类的封装及使用

不言
发布: 2018-04-26 10:18:25
原创
2877人浏览过

这篇文章介绍的内容是关于PHP 数据库类的封装及使用,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

封装类
登录后复制
<?php
//封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现
class DB{
    //属性    
    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'] : 'czyyzb';        
     $this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'mydb';        
     $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 '数据库连接错误:<br/>';            
       echo '错误编号' . mysql_errno() . '<br/>';            
       echo '错误内容' . mysql_error() . '<br/>';            
       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 '语句出现错误:<br/>';            
              echo '错误编号' . mysql_errno() . '<br/>';            
              echo '错误内容' . mysql_error() . '<br/>';            
              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;    
              }
              }     
  ?>
登录后复制
<br/>
登录后复制
登录后复制
登录后复制
<br/>
登录后复制
登录后复制
登录后复制
<br/>
登录后复制
登录后复制
登录后复制
使用
登录后复制
<? php
登录后复制
header("Content-type: text/html; charset=utf-8");
include("conn.php");
//实例化
$con = new DB(array('dbname' => 'oilmis_wh'));
$sql = "SELECT * FROM stock ";
$arr = $con ->db_getAll($sql);
登录后复制
?>//这个DB类,一般不写析构(不释放资源)
登录后复制

               

相关推荐:

很好用的PHP数据库类

php 数据库类 适用于 mysql sql service

以上就是PHP 数据库类的封装及使用的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号