好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP数据库处理类 - php类库

PHP数据库处理类

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

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

<?php       /**       * Created by JetBrains PhpStorm.       * User: YangLiu       * Date: 2013-7-12       * Time: 下午6:19       * Description:这是一个简单的数据库操作类,便于快速向数据库插入数据、删除数据,更新数据       */        class  db {       //数据库连接        protected   $mysqli ;       //表名        protected   $table ;       //选项        protected   $opt ;       /***       * 构造方法       * @param $tab_name       */        function  __construct( $tab_name ){       $this ->config( $tab_name );      }              // 配置方法        protected   function  config( $tab_name ){       $this ->db= new  mysqli(DBHOST,DBUSER,DBPWD,DBNAME);       //DBFIX为数据库表前缀        $this ->table = DBFIX. $tab_name ;       if (mysqli_connect_errno()){       echo   "数据库连接错误" .mysqli_connect_errno();       exit ();      }       $this ->db->query( "SET NAMES 'GBK'" );              //给opt数组设置初始值        $this ->opt[ 'field' ] =  '*' ;       $this ->opt[ 'where' ]= $this ->opt[ 'order' ]= $this ->opt[ 'limit' ]= $this ->opt[ 'group' ] =  '' ;      }              // 获得当前表字段        function  tbFields(){       $result  =  $this ->db->query( "DESC {$this->table}" );       $fieldArr  =  array ();       while (( $row  =  $result ->fetch_assoc())!=false){       $fieldArr [] =  $row [ 'Field' ];      }       return   $fieldArr ;      }              // 获得查询字段        function  field( $field ){       $fieldArr  =  is_string ( $field )? explode ( "," , $field ): $field ;       if ( is_array ( $fieldArr )){       $field  =  '' ;       foreach ( $fieldArr   as   $v ){       $field .= '`'  .  $v .  '`'  .  ',' ;      }      }       return  rtrim( $field , ',' );      }              // SQL条件方法        function  where( $where ){       $this ->opt[ 'where' ] =  is_string ( $where ) ? "WHERE "  .  $where  :  '' ;       return   $this ;      }              //limit方法        function  limit( $limit ){       $this ->opt[ 'limit' ] =  is_string ( $limit ) ?  "LIMIT " . $limit  :  '' ;       return   $this ;      }              //排序方法        function  order( $order ){       $this ->opt[ 'order' ] =  is_string ( $order ) ?  "ORDER BY " . $order : '' ;       return   $this ;      }              // 分组GROUP BY        function  group( $group ){       $this ->opt[ 'group' ] =  is_string ( $group ) ?  'GROUP BY' . $group  :  '' ;       return   $this ;      }              //SELECT        function  select(){       $sql  = "SELECT { $this ->opt[ 'field' ]} FROM { $this ->table}      { $this ->opt[ 'where' ]} { $this ->opt[ 'group' ]} { $this ->opt[ 'limit' ]}      { $this ->opt[ 'order' ]} ";       return   $this ->sql( $sql );      }              //DELETE方法        function   delete ( $id = '' ){       if ( $id  ==  ''  &&  empty empty ( $this ->opt[ 'where' ])){       die ( '查询条件不能为空' );      }       if ( $id  !=  '' ){       if ( is_array ( $id )){       $id  = implode( ',' , $id );      }       $this ->opt[ 'where' ] =  "WHERE id IN ("  . $id .  ")" ;      }       $sql  =  "DELETE FROM {$this->table} {$this->opt['where']} {$this->opt['limit']}" ;       //echo $sql."<br/>";        return   $this ->query( $sql );      }              //查阅单条记录        function  find( $id ){       $sql  =  "SELECT {$this->opt['field']} FROM {$this->table} WHERE `id` = {$id}" ;       //echo $sql.'<br>';        return   $this ->sql( $sql );      }              // 添加数据        function  insert( $args ){       is_array ( $args )  or   die ( '参数非数组' );       $fields  =  $this ->field( array_keys ( $args ));       $values  =  $this ->values( array_values ( $args ));       $sql  =  "INSERT INTO {$this->table} ({$fields}) VALUES($values)" ;       if ( $this ->query( $sql )>0){       return   $this ->db->insert_id;      }       return  false;      }              // 更新UPDATE        function  update( $args ){       is_array ( $args )  or   die ( "参数非数组" );       if ( empty empty ( $this ->opt[ 'where' ]))  die ( "条件不能为空" );       $set  =  '' ;       $gpc  = get_magic_quotes_gpc();       while (list( $k , $v ) = each( $args )){       $v  = ! $gpc ? addslashes ( $v ): $v ;       $set .= "`{$k}`='" . $v . "'," ;      }       $set  = rtrim( $set , ',' );       $sql  =  "UPDATE {$this->table} SET $set {$this->opt['where']}" ;       return   $this ->query( $sql );      }              // 统计所有记录数        function   count ( $tabname = '' ){       $tabname  =  $tabname == '' ? $this ->table: $tabname ;       $sql  =  "SELECT `id` FROM {$tabname} {$this->opt['where']}" ;       //echo $sql.'<br/>';        return   $this ->query( $sql );      }              // 数据数组转为字符串格式,同时进行转议        protected   function  values( $value ) {       if  (! get_magic_quotes_gpc ()) {       $strValue  =  '' ;       foreach  (  $value   as   $v  ) {       $strValue  .=  "'"  .  addslashes  (  $v  ) .  "'," ;      }      }  else  {       foreach  (  $value   as   $v  ) {       $strValue  .=  "'$v'," ;      }      }       return  rtrim (  $strValue ,  ','  );      }              // 获得结果集        function  sql( $sql ) {       $result  =  $this ->db->query( $sql )  or   die ( $this ->dbError());       $resultArr  =  array ();       while (( $row  =  $result ->fetch_assoc())!=false){       $resultArr [] =  $row ;      }       return   $resultArr ;      }              // 没有结果集的SQL        function  query( $sql ){       $this ->db->query( $sql )  or   die ( $this ->dbError());       return   $this ->db->affected_rows;      } //开源代码phpfensi测试数据               // 返回错误        function  dbError(){       return   $this ->db->error;      }      }      ?>  

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

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

$table:当前数据库的表名

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

DBFIX:数据库配置中的常量[表前缀]

DBHOST:数据库主机

DBFIX:数据库用户名

DBPWD:数据库密码

DBNAME:数据库名称

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

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

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

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

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

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

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

其输出结果如下:

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

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

echo $db->field($tbFields);

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

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

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

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

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

数据库的增、删、改、查

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

插入数据

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

$inserArr = array('btitle'=>'HdhCmsTestphpfensi测试数据','content'=>'小天地,大世界是一个技术交流博客');$db->insert($inserArr);

删除数据

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

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

更新数据

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

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

查找数据

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

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

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

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

group方法:数组方法

find方法:查找单条记录

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

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

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

查看更多关于PHP数据库处理类 - php类库的详细内容...

  阅读:39次