首页 > 语言 > PHP > 正文

PHP数据库处理类

2024-09-04 11:44:13
字体:
来源:转载
供稿:网友

在WEB应用程序开发数据库操作类是一个必不可少的东西了,当然大家可以直接连接数据库进行查询,但这样维护不方便,下面我整理了一个不错的PHP数据库处理类与各位分享.

最近在看后盾网的php视频,主要内容是相关制作一个博客系统,感觉还是很有收获,简单的数据库处理类,下面是其中讲到的一个简单的数据库处理类,请见源码:

  1. <?php 
  2.     /** 
  3.     * Created by JetBrains PhpStorm. 
  4.     * User: YangLiu 
  5.     * Date: 2013-7-12 
  6.     * Time: 下午6:19 
  7.     * Description:这是一个简单的数据库操作类,便于快速向数据库插入数据、删除数据,更新数据 
  8.     */ 
  9.     class db { 
  10.     //数据库连接 
  11.     protected $mysqli
  12.     //表名 
  13.     protected $table
  14.     //选项 
  15.     protected $opt
  16.     /*** 
  17.     * 构造方法 
  18.     * @param $tab_name 
  19.     */ 
  20.     function __construct($tab_name){ 
  21.     $this->config($tab_name); 
  22.     } 
  23.       
  24.     // 配置方法 
  25.     protected function config($tab_name){ 
  26.     $this->db=new mysqli(DBHOST,DBUSER,DBPWD,DBNAME); 
  27.     //DBFIX为数据库表前缀 
  28.     $this->table = DBFIX.$tab_name
  29.     if(mysqli_connect_errno()){ 
  30.     echo "数据库连接错误".mysqli_connect_errno(); 
  31.     exit(); 
  32.     } 
  33.     $this->db->query("SET NAMES 'GBK'"); 
  34.       
  35.     //给opt数组设置初始值 
  36.     $this->opt['field'] = '*'
  37.     $this->opt['where']=$this->opt['order']=$this->opt['limit']=$this->opt['group'] = ''
  38.     } 
  39.       
  40.     // 获得当前表字段 
  41.     function tbFields(){ 
  42.     $result = $this->db->query("DESC {$this->table}"); 
  43.     $fieldArr = array(); 
  44.     while(($row = $result->fetch_assoc())!=false){ 
  45.     $fieldArr[] = $row['Field']; 
  46.     } 
  47.     return $fieldArr
  48.     } 
  49.       
  50.     // 获得查询字段 
  51.     function field($field){ 
  52.     $fieldArr = is_string($field)?explode(",",$field):$field
  53.     if(is_array($fieldArr)){ 
  54.     $field = ''
  55.     foreach($fieldArr as $v){ 
  56.     $field.='`' . $v'`' . ','
  57.     } 
  58.     } 
  59.     return rtrim($field,','); 
  60.     } 
  61.       
  62.     // SQL条件方法 
  63.     function where($where){ 
  64.     $this->opt['where'] = is_string($where) ?"WHERE " . $where : ''
  65.     return $this
  66.     } 
  67.       
  68.     //limit方法 
  69.     function limit($limit){ 
  70.     $this->opt['limit'] = is_string($limit) ? "LIMIT ".$limit : ''
  71.     return $this
  72.     } 
  73.       
  74.     //排序方法 
  75.     function order($order){ 
  76.     $this->opt['order'] = is_string($order) ? "ORDER BY ".$order:''
  77.     return $this
  78.     } 
  79.       
  80.     // 分组GROUP BY 
  81.     function group($group){ 
  82.     $this->opt['group'] = is_string($group) ? 'GROUP BY'.$group : ''
  83.     return $this
  84.     } 
  85.       
  86.     //SELECT 
  87.     function select(){ 
  88.     $sql = "SELECT {$this->opt['field']} FROM {$this->table} 
  89.     {$this->opt['where']} {$this->opt['group']} {$this->opt['limit']} 
  90.     {$this->opt['order']} "; 
  91.     return $this->sql($sql); 
  92.     } 
  93.       
  94.     //DELETE方法 
  95.     function delete($id=''){ 
  96.     if($id == '' && emptyempty($this->opt['where'])){ 
  97.     die('查询条件不能为空'); 
  98.     } 
  99.     if($id != ''){ 
  100.     if(is_array($id)){ 
  101.     $id = implode(',',$id); 
  102.     } 
  103.     $this->opt['where'] = "WHERE id IN (" .$id")"
  104.     } 
  105.     $sql = "DELETE FROM {$this->table} {$this->opt['where']} {$this->opt['limit']}"
  106.     //echo $sql."<br/>"; 
  107.     return $this->query($sql); 
  108.     } 
  109.       
  110.     //查阅单条记录 
  111.     function find($id){ 
  112.     $sql = "SELECT {$this->opt['field']} FROM {$this->table} WHERE `id` = {$id}"
  113.     //echo $sql.'<br>'; 
  114.     return $this->sql($sql); 
  115.     } 
  116.       
  117.     // 添加数据 
  118.     function insert($args){ 
  119.     is_array($argsor die('参数非数组'); 
  120.     $fields = $this->field(array_keys($args)); 
  121.     $values = $this->values(array_values($args)); 
  122.     $sql = "INSERT INTO {$this->table} ({$fields}) VALUES($values)"
  123.     if($this->query($sql)>0){ 
  124.     return $this->db->insert_id; 
  125.     } 
  126.     return false; 
  127.     } 
  128.       
  129.     // 更新UPDATE 
  130.     function update($args){ 
  131.     is_array($argsor die("参数非数组"); 
  132.     if(emptyempty($this->opt['where'])) die("条件不能为空"); 
  133.     $set = ''
  134.     $gpc = get_magic_quotes_gpc(); 
  135.     while(list($k,$v) = each($args)){ 
  136.     $v = !$gpc?addslashes($v):$v
  137.     $set.="`{$k}`='".$v."',"
  138.     } 
  139.     $set = rtrim($set,','); 
  140.     $sql = "UPDATE {$this->table} SET $set {$this->opt['where']}"
  141.     return $this->query($sql); 
  142.     } 
  143.       
  144.     // 统计所有记录数 
  145.     function count($tabname=''){ 
  146.     $tabname = $tabname==''?$this->table:$tabname
  147.     $sql = "SELECT `id` FROM {$tabname} {$this->opt['where']}"
  148.     //echo $sql.'<br/>'; 
  149.     return $this->query($sql); 
  150.     } 
  151.       
  152.     // 数据数组转为字符串格式,同时进行转议 
  153.     protected function values($value) { 
  154.     if (! get_magic_quotes_gpc ()) { 
  155.     $strValue = ''
  156.     foreach ( $value as $v ) { 
  157.     $strValue .= "'" . addslashes ( $v ) . "',"
  158.     } 
  159.     } else { 
  160.     foreach ( $value as $v ) { 
  161.     $strValue .= "'$v',"
  162.     } 
  163.     } 
  164.     return rtrim ( $strValue',' ); 
  165.     } 
  166.       
  167.     // 获得结果集 
  168.     function sql($sql) { 
  169.     $result = $this->db->query($sqlor die($this->dbError()); 
  170.     $resultArr = array(); 
  171.     while(($row = $result->fetch_assoc())!=false){ 
  172.     $resultArr[] = $row
  173.     } 
  174.     return $resultArr
  175.     } 
  176.       
  177.     // 没有结果集的SQL 
  178.     function query($sql){ 
  179.     $this->db->query($sqlor die($this->dbError()); 
  180.     return $this->db->affected_rows; 
  181.     }//开源代码Vevb.com 
  182.       
  183.     // 返回错误 
  184.     function dbError(){ 
  185.     return $this->db->error; 
  186.     } 
  187.     } 
  188.     ?>  

以上是一个简单的PHP数据库处理类,就它的使用特地做个说明,下面对以上代码中的部分相常量和变量作以说明:

$mysqli:对当前数据库的链接引用

$table:当前数据库的表名

$opt:当前数据库的表的所有字段名

DBFIX:数据库配置中的常量“表前缀”

DBHOST:数据库主机

DBFIX:数据库用户名

DBPWD:数据库密码

DBNAME:数据库名称

数据库处理类的使用方法,配置数据库处理类,在使用数据库处理类之前,你必须有一个相关的配置文件,下面我就写一个connect.php文件,文件内容如下所示:

  1. <?php 
  2.     /** 
  3.     * Created by JetBrains PhpStorm. 
  4.     * User: YangLiu 
  5.     * Date: 2013-7-14 
  6.     * Time: 下午2:15 
  7.     * Description:数据库配置文件 
  8.     */ 
  9.     define("DBHOST",'localhost'); //定义数据库服务器连接地址 
  10.     define("DBUSER",'root'); //数据库用户名 
  11.     define("DBPWD",''); //数据库密码 
  12.     define("DBNAME",'blog'); //定义数据库名 
  13.     define("DBFIX",'blog_'); //定义数据库表的前缀 
  14. ?> 

为了让您更简单的理解,我就没有建立更多的目录,把所有的文件全部放在同一目录,如果您觉得不好,也可以自行建立目录,并重新根据情况来调整文件位置.

数据库处理类的使用,使用数据库,你要先引用connect.php和db.class.php文件,下面举一个demo.php文件为例:

  1. <?php 
  2.     /** 
  3.     * Created by JetBrains PhpStorm. 
  4.     * User: LiuYang 
  5.     * Date: 2013-9-15 
  6.     * Time: 下午10:39 
  7.     * Description:演示DEMO文件 
  8.     */ 
  9.     include './config.php'//加载配置文件 
  10.     include './page.class.php'//加载数据库处理类 
  11.       
  12.     $db = $db = new db('blog'); //链接数据库的表blog_blog 
  13.       
  14.     ?> 

输出数据库表的字段名,输出数据库表的字段名,用的tbFields方法,代码如下:

$tbField = $db->tbFields();var_dump($tbField);

其输出结果如下:

  1. array (size=5) 
  2.   0 => string 'id' (length=2) 
  3.   1 => string 'btitle' (length=6) 
  4.   2 => string 'content' (length=7) 
  5.   3 => string 'status' (length=6) 
  6.   4 => string 'cid' (length=3) 

下面,再介绍一个数据库处理类中的相关的另一个方法:

echo $db->field($tbFields);

最后的输出结果:`id`,`btitle`,`content`,`status`,`cid`

统计所有记录数,数据库类中还有一个方法,用来统计数据的所有条数count方法,在我们的分页处理中,它也就会显示得重要了,代码如下:

echo $db->count('blog'); 

注意:以上代码是根据id来查阅,其中count方法代码如下:

  1. // 统计所有记录数 
  2.     function count($tabname=''){ 
  3.     $tabname = $tabname==''?$this->table:$tabname
  4.     $sql = "SELECT `id` FROM {$tabname} {$this->opt['where']}"
  5.     return $this->query($sql); 
  6.     } 

数据库的增、删、改、查

数据库的相关操作无外乎就是增、删、改、查,下面对其作以简单介绍.

插入数据

insert方法向数据库中插入数据,其中传入的参数为一个数组,如array('btitle'=>'www.Vevb.com','content'=>'小天地,大世界是一个技术交流博客')。其中数组的键名即为表的字段名,而键值即为想要插入的内容,请看下面的示例:

$inserArr = array('btitle'=>'www.Vevb.com','content'=>'小天地,大世界是一个技术交流博客');$db->insert($inserArr);

删除数据

delete方法是专门来删除数据,为了防止数据被误删,数据删除必须存在一定的限制,比如说通过where、limit方法来作一定的限制,或者你可以直接传入要删除数据的id,你可以查看下面的示例:

  1. //删除id为3的数据 
  2.     $db->delete(3); 
  3.       
  4.     //删除id>5的数据 
  5.     $db->where('id>5')->delete(); 
  6.       
  7.     //删除从20起后的10条数据 
  8.     $db->where('id>5')->limit('20,10')->delete();  

更新数据

数据添加了,有时发现错误,就得高法来更改数据,update方法用来更新数据,update方法与insert方法类似,都接受一个数组参数,数组的键名为表的字段名,对应的键值为要插入的内容,下面的内容就是把id为29的数据更新为array中的数据,代码如下:

  1. $db->where('id=29')->update(array('btitle'=>'www.Vevb.com','content'=>'小天地,大世界是一个技术交流博客')); 
  2.   //更新id>35的所有数据 
  3.   $db->where('id>29')->update(array('btitle'=>'www.Vevb.com','content'=>'小天地,大世界是一个技术交流博客'));  

查找数据

数据库处理类中提供了select方法,可以很方便的进行数据的查找,结合着where、limit方法,就可以查找相应的数据,具体的使用方法请见下例:

  1. $db->select(); //查找所有数据 
  2.     
  3.   $db->where('id=0')->select(); //查找指定数据 
  4.     
  5.   $db->where('id>9')->select(); //查找id大于9的数据集合 
  6.     
  7.   $db->limit('10,9')->select(); //从查找数据第10条以后的9条数据 
  8.     
  9.   $db->where('id>50')->limit('10,9')->select();  

其它方法:除了以上几种方法之外,数据库处理类还提供了如下的方法.

order方法:主要是来更改查找数据排序方式

group方法:数组方法

find方法:查找单条记录

sql方法:直接执行数据SQL语句,并返回处数据集

query方法:也可以执行数据SQL语句,但不返回数据集,而是返回受影响的记录条数.

关于数据库处理类,最后说明一点,此数据库处理类是后盾网PHP视频中所讲,有助于像我这样的新手来学习,故特地整理.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表