封装类似thinkphp连贯操作数据库的Db类(简单版)。

Posted Yxh_blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装类似thinkphp连贯操作数据库的Db类(简单版)。相关的知识,希望对你有一定的参考价值。

<?php
header("Content-Type:text/html;charset=utf-8");

/**
 *php操作mysql的工具类
 */
class Db{
	private $_db = null;//数据库连接句柄
	private $_table = null;//表名
	private $_where = null;//where条件
	private $_order = null;//order排序
	private $_limit = null;//limit限定查询
	private $_group = null;//group分组
	private $_configs = array(
				‘hostname‘ => ‘localhost‘,
				‘dbname‘   => ‘test‘,
				‘username‘ => ‘root‘,
				‘password‘ => ‘1234‘
			);//数据库配置

	/**
	 * 构造函数,连接数据库
	 */
	public function __construct(){
		$link = $this->_db;
		if(!$link){
			$db = mysqli_connect($this->_configs[‘hostname‘],$this->_configs[‘username‘],$this->_configs[‘password‘],$this->_configs[‘dbname‘]);
			mysqli_query($db,"set names utf8");
			if(!$db){
				$this->ShowException("错误信息".mysqli_connect_error());
			}
			$this->_db = $db;
		}
	}

	/**
	 * 获取所有数据
	 *
	 * @param      <type>   $table  The table
	 *
	 * @return     boolean  All.
	 */
	public function getAll($table=null){
		$link = $this->_db;
		if(!$link)return false;
		$sql = "SELECT * FROM {$table}";
		$data = mysqli_fetch_all($this->execute($sql));
		return $data;
	}

	public function table($table){
		$this->_table = $table;
		return $this;
	}

	/**
	 * 实现查询操作
	 *
	 * @param      string   $fields  The fields
	 *
	 * @return     boolean  ( description_of_the_return_value )
	 */
	public function select($fields="*"){
		$fieldsStr = ‘‘;
		$link = $this->_db;
		if(!$link)return false;
		if(is_array($fields)){
			$fieldsStr = implode(‘,‘, $fields);
		}elseif(is_string($fields)&&!empty($fields)){
			$fieldsStr = $fields;
		}
		$sql = "SELECT {$fields} FROM {$this->_table} {$this->_where} {$this->_order} {$this->_limit}";
		$data = mysqli_fetch_all($this->execute($sql));
		return $data;
	}

	/**
	 * order排序
	 *
	 * @param      string   $order  The order
	 *
	 * @return     boolean  ( description_of_the_return_value )
	 */
	public function order($order=‘‘){
		$orderStr = ‘‘;
		$link = $this->_db;
		if(!$link)return false;
		if(is_string($order)&&!empty($order)){
			$orderStr = "ORDER BY ".$order;
		}
		$this->_order = $orderStr;
		return $this;
	}

	/**
	 * where条件
	 *
	 * @param      string  $where  The where
	 *
	 * @return     <type>  ( description_of_the_return_value )
	 */
	public function where($where=‘‘){
		$whereStr = ‘‘;
		$link = $this->_db;
		if(!$link)return $link;
		if(is_array($where)){
			foreach ($where as $key => $value) {
				if($value == end($where)){
					$whereStr .= "`".$key."` = ‘".$value."‘";
				}else{
					$whereStr .= "`".$key."` = ‘".$value."‘ AND ";
				}
			}
			$whereStr = "WHERE ".$whereStr;
		}elseif(is_string($where)&&!empty($where)){
			$whereStr = "WHERE ".$where;
		}
		$this->_where = $whereStr;
		return $this;
	}

	/**
	 * group分组
	 *
	 * @param      string   $group  The group
	 *
	 * @return     boolean  ( description_of_the_return_value )
	 */
	public function group($group=‘‘){
		$groupStr = ‘‘;
		$link = $this->_db;
		if(!$link)return false;
		if(is_array($group)){
			$groupStr = "GROUP BY ".implode(‘,‘,$group);
		}elseif(is_string($group)&&!empty($group)){
			$groupStr = "GROUP BY ".$group;
		}
		$this->_group = $groupStr;
		return $this;
	}

	/**
	 * limit限定查询
	 *
	 * @param      string  $limit  The limit
	 *
	 * @return     <type>  ( description_of_the_return_value )
	 */
	public function limit($limit=‘‘){
		$limitStr = ‘‘;
		$link = $this->_db;
		if(!$link)return $link;
		if(is_string($limit)||!empty($limit)){
			$limitStr = "LIMIT ".$limit;
		}elseif(is_numeric($limit)){
			$limitStr = "LIMIT ".$limit;
		}
		$this->_limit = $limitStr;
		return $this;
	}

	/**
	 * 执行sql语句
	 *
	 * @param      <type>   $sql    The sql
	 *
	 * @return     boolean  ( description_of_the_return_value )
	 */
	public function execute($sql=null){
		$link = $this->_db;
		if(!$link)return false;
		$res = mysqli_query($this->_db,$sql);
		if(!$res){
			$errors = mysqli_error_list($this->_db);
			$this->ShowException("报错啦!<br/>错误号:".$errors[0][‘errno‘]."<br/>SQL错误状态:".$errors[0][‘sqlstate‘]."<br/>错误信息:".$errors[0][‘error‘]);
			die();
		}
		return $res;
	}

	/**
	 * 插入数据
	 *
	 * @param      <type>   $data   The data
	 *
	 * @return     boolean  ( description_of_the_return_value )
	 */
	public function insert($data){
		$link = $this->_db;
		if(!$link)return false;
		if(is_array($data)){
			$keys = ‘‘;
			$values = ‘‘;
			foreach ($data as $key => $value) {
				$keys .= "`".$key."`,";
				$values .= "‘".$value."‘,";
			}
			$keys = rtrim($keys,‘,‘);
			$values = rtrim($values,‘,‘);
		}
		$sql = "INSERT INTO `{$this->_table}`({$keys}) VALUES({$values})";
		mysqli_query($this->_db,$sql);
		$insertId = mysqli_insert_id($this->_db);
		return $insertId;
	}

	/**
	 * 更新数据
	 *
	 * @param      <type>  $data   The data
	 *
	 * @return     <type>  ( description_of_the_return_value )
	 */
	public function update($data){
		$link = $this->_db;
		if(!$link)return $link;
		if(is_array($data)){
			$dataStr = ‘‘;
			foreach ($data as $key => $value) {
				$dataStr .= "`".$key."`=‘".$value."‘,";
			}
			$dataStr = rtrim($dataStr,‘,‘);
		}
		$sql = "UPDATE `{$this->_table}` SET {$dataStr} {$this->_where} {$this->_order} {$this->_limit}";
		$res = $this->execute($sql);
		return $res;
	}

	/**
	 * 删除数据
	 *
	 * @return     <type>  ( description_of_the_return_value )
	 */
	public function delete(){
		$link = $this->_db;
		if(!$link)return $link;
		$sql = "DELETE FROM `{$this->_table}` {$this->_where}";
		$res = $this->execute($sql);
		return $res;
	}

	/**
	 * 异常信息输出
	 *
	 * @param      <type>  $var    The variable
	 */
	private	function ShowException($var){
		if(is_bool($var)){
			var_dump($var);
		}else if(is_null($var)){
			var_dump(NULL);
		}else{
			echo "<pre style=‘position:relative;z-index:1000;padding:10px;border-radius:5px;background:#F5F5F5;border:1px solid #aaa;font-size:14px;line-height:18px;opacity:0.9;‘>".print_r($var,true)."</pre>";
		}
	}

}
$db = new Db();
//查询操作
var_dump($db->table(‘user‘)->where(‘id > 2‘)->order(‘id desc‘)->limit(‘2,4‘)->select());

//插入操作
var_dump($db->table(‘user‘)->insert(array(‘username‘=>‘user‘,‘password‘=>‘pwd‘)));

//更新操作
var_dump($db->table(‘user‘)->where(‘id = 1‘)->update(array(‘username‘=>‘user1‘,‘password‘=>‘pwd1‘)));

//删除操作
var_dump($db->table(‘user‘)->where(‘id = 1‘)->delete());

  

以上是关于封装类似thinkphp连贯操作数据库的Db类(简单版)。的主要内容,如果未能解决你的问题,请参考以下文章

掌握Thinkphp3.2.0----连贯操作

Thinphp模型

掌握Thinkphp3.2.0----CURD

ThinkPHP - 连贯操作

ThinkPHP教程_PHP框架之ThinkPHPCRUD与连贯操作

limit方法也是模型类的连贯操作方法之一