加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

一个简易的PHP数据库处理类

发布时间:2023-03-13 14:24:41 所属栏目:教程 来源:
导读:最近在看后盾网的PHP视频,主要内容是相关制作一个博客系统,感觉还是很有收获。

简单的数据库处理类

下面是其中讲到的一个简单的数据库处理类,请见源码:

<?PHP

/**

* Created by JetBrains PHPSt
最近在看后盾网的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($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($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;

     // 返回错误

    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'=>'','content'=>'小天地,大世界是一个技术交流博客')。其中数组的键名即为表的字段名,而键值即为想要插入的内容。请看下面的示例:

    $inserArr = array('btitle'=>'','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'=>'','content'=>'小天地,大世界是一个技术交流博客'));

    //更新id>35的所有数据

    $db->where('id>29')->update(array('btitle'=>','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视频中所讲,有助于像我这样的新手(也就是我)来学习,故特地整理。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章