一个简易的PHP数据库处理类
发布时间:2023-03-13 14:24:41 所属栏目:教程 来源:
导读:最近在看后盾网的PHP视频,主要内容是相关制作一个博客系统,感觉还是很有收获。
简单的数据库处理类
下面是其中讲到的一个简单的数据库处理类,请见源码:
<?PHP
/**
* Created by JetBrains PHPSt
简单的数据库处理类
下面是其中讲到的一个简单的数据库处理类,请见源码:
<?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视频中所讲,有助于像我这样的新手(也就是我)来学习,故特地整理。 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐