封装类似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());

  

时间: 2024-12-21 21:17:13

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

thinkPHP 连贯操作

在手册中的位置为 模型->连贯操作 一.常用连贯操作    1.where        帮助我们设置查询条件    2.order            对结果进行排序        $arr=$m->order('id desc')->select();        $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();    3.limit            限制结果        lim

封装的 PDO 操作数据库 的帮助类 MySqlHelper

封装的 PDO 操作数据库 的帮助类 MySqlHelper 封装的 PDO 操作数据库 的帮助类 MySqlHelper ,仅供学习交流使用! <?php /** * Description of MySqlHelper * * @author fx678 */ class MySqlHelper { private static $pdoDB = null; public function __destruct() { $this->pdoDB = null; } /** * 获取ini配

编写hibernate 操作数据库的dao层简单代码

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久

ThinkPHP - 连贯操作 - 【实现机制】

<?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 private $_tableName = NULL; //构造方法,接收表名称 public function __construct($tabName){ //给属性赋值 $this->_tableName = $tabName; //连接数据库 $this->_conn = mysqli_c

php操作数据库的几个简单语句

数据存储文件介绍 .frm是描述了表的结构 .MYD保存了表的数据记录 .MYI则是表的索引 windows 命令: window + R -> cmd打开命令窗口 配置path环境变量 mysql -u root -p / mysql -uroot -p password;用户名和密码 mysql mydb -u root -p / mysql mydb -u root -p newpassword 修改密码 数据库操作命令 命令 作用 show databases 显示所有数据库列表 cre

ThinkPHP 大D方法思想下的JDBC操作数据库D类

这里我封装出来的D类,是根据ThinkPHP中的D方法中做出来的,其中有些出入的地方,我进行了一些个性化的修正,如:ThinkPHP中操作数据库时,需要在配置文件中定义关于数据库的配置,这里我采用外部接口定义常量的方法进行定义,在D类中实现该接口,实现接口中常量的引用,方便配置的修改:D类中还提供了executeDML和executeDQL这两个方法--传入SQL语句即可进行更复杂的增删查改操作. 该类还存有许多不足的地方. DBConfig.java package cn.zhku.myjdb

JDBC操作数据库的三种方式比较

JDBC(java Database Connectivity)java数据库连接,是一种用于执行上sql语句的javaAPI,可以为多种关系型数据库提供统一访问接口.我们项目中经常用到的MySQL.oracle.DB2等关系型数据库均是通过JDBC来访问的,现在主流的ORM框架Hibernate.Mybatis等均是在JDBC的基础上做的进一步封装.优化.一般小型的项目,可以直接用JDBC来访问数据库,简单方便.我在进过几个项目后,总结了三总JDBC的基本用法,对这几种用法做一个总结. 第一种

python如何用sqlalchemy操作数据库

工具:mysql  python sqlalchemy ---------------------------------------- 准备工作: 1.安装mysql 如果是window环境请参考 win7安装mysql 如果是linux环境请参考 --稍后补充 2.安装python windows: win7安装python2和python3 linux: linux安装python36 linux python2.6.6以后的版本同样要通过源码包安装,看了下这位博主的这篇文章写的非常详细h

在MVC3中使用code first生成数据局库并操作数据库

1.建立Users和UserInfos两个实体类 对应的是数据库中的表 public class User { //类名+Id(User+Id)组成的字符串在数据库表中会设置该字段是主键且是按1的增量增长 public int UserId { get; set; } public string UserName { get; set; } } UserInfos表 public class UserInfo { public int UserInfoId { get; set; } publi