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

  

时间: 04-03

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

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

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

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

关于php如何连贯操作类方法(以数据库为例)

关于php如何连贯操作类方法(以数据库为例) 1.下面是我写好的关于mysqli操作数据库的一些常用方法,大神请掠过 1 <?php 2 3 class Db 4 { 5 static private $config = [ 6 'datahost' => '', // 主机名 7 'dataname' => '', // 数据库名 8 'username' => '', // 用户名 9 'password' => '', // 用户密码 10 'charset' =>

封装JDBC操作数据库的方法

自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三:代码 1:和数据库进行交互,首先是数据源,获取连接,代码如下: 1 /** 2 * 3 */ 4 package com.hlcui.datasource; 5 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 impo

第 39 章 ThinkPHP--SQL 连贯操作

本节课,我们将学习 ThinkPHP 模型基础类提供的连贯操作,通过连贯操作可以有效的 提供数据存取的代码清晰度和开发效率,并且支持所有的 CURD 操作. 一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user->where('id in (1,2,3,4)')->order('date DESC')->limit(2)->select()

php连贯操作实现

我们在使用一些框架(如ThinkPHP)编码的时候,常用到这样的代码. M('User')->where(array('id'=>1))->field('name')->select(); 这样不仅有利于编码,而且也能让人"心情愉悦"呢.好了,不多说了.让我们看看如何实现的吧? <?php //数据库操作基类[PS:主要功能连贯功能实现] class Db{ //此属性定义要实现连贯操作的方法名 public $sql = array( "fie

使用内置函数操作数据库

0.视频:http://www.imooc.com/video/3383 1.笔记: ContentValues: 1)用于存储一组可以被ContentResolve处理的值: 2)代码示例: ContentValues values=new ContentValues();//类似hashMap key value values.put("name", "张三"); 3)执行对应的Sql操作: db.update("stutb", values

封装自己的DB类(PHP)

封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现.这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便! 1.封装一个DB类.一个类文件应该只有一个类,其他的内容全部都没有.类文件的命名规则:类名.class.php 下面是创建DB类的代码: <?php //封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现 class DB{ //属性 private $host; private $port; p

php pdo操作数据库

POD扩展是在PHP5中加入,该扩展提供PHP内置类 PDO来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题. PDO的特点: 性能.PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训.因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性.能力.PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问. 简单.PDO 旨在使您能够轻松使用数据库.API 不会强行介入您的代码,同时会清楚地表明