<?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类(简单版)。的更多相关文章

  1. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7704914.html ------------------------------------ ...

  2. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7718741.html ------------------------------------ ...

  3. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...

  4. ThinkPHP - 连贯操作

    /** * 连贯操作 * @return 无返回值 */ public function coherentOperation(){ //实例化模型 $user = M('User'); // +--- ...

  5. 用于JDBC操作数据库的公共类

    /* * @(#)CommonSql.java 2011-9-5 * * Copyright 2011 Bianjing,All rights reserved. */ import java.sql ...

  6. MySQL数据库执行计划(简单版)

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库执行计划简单版时间:2019年2月25日内容:MySQL数据库执行计划简单版重点:MySQL ...

  7. mysql数据库 thinkphp连贯操作where条件的判断不正确的问题

    前两天一直写一个基于thinkphp的东西,遇到从mysql数据库里select数据,where条件一直出现问题的情况.直接上代码: $history = M('history'); $suerId ...

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

    <?php //模型类 class Model { //数据库连接 private $_conn = NULL; //where语句 private $_where = NULL; //表名称 ...

  9. C# ADO.NET操作数据库 SqlHelp.cs类

    刚开始练习ADONET的时候,练习的一个SQLHelp.cs  数据库操作类,很简单,但是也很实用 using System; using System.Collections.Generic; us ...

随机推荐

  1. 【BZOJ4605】崂山白花蛇草水 权值线段树+kd-tree

    [BZOJ4605]崂山白花蛇草水 Description 神犇Aleph在SDOI Round2前立了一个flag:如果进了省队,就现场直播喝崂山白花蛇草水.凭借着神犇Aleph的实力,他轻松地进了 ...

  2. Azkaban_Oozie_action

    http://azkaban.github.io/azkaban/docs/2.5/ There is no reason why MySQL was chosen except that it is ...

  3. linux c编程:进程间通信

    进程间的通信包括管道,共享内存,信号量通信,消息队列,套借口(socket)和全双工管道通信 首先来看下管道的用法:管道顾名思义,就如同下水道管道一样,当从管道一端流水到另一端的时候,水流的方向是单方 ...

  4. ZooKeeper原理及使用(转)

    原文地址 ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby ...

  5. Kattis - cardhand Card Hand Sorting 【暴力枚举】

    题意 给出 一个扑克牌的序列 求排成一个"有序"序列 最少的插入次数 有序是这样定义的 同一个花色的 必须放在一起 同一花色中的牌 必须是 升序 或者是 降序 然后 A 是最大的 ...

  6. (linux)BSP(板上支持包)概述

    1. BSP概述 BSP即Board Support Package,板级支持包. 它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上. 对于具体的硬件平台,与硬件相关 ...

  7. SQLSERVER2008 R2的端口设置

    通过存储过程查看 我们首先打开sqlserver连接sqlserver2008的数据库实例,然后执行如下存储过程: --查询端口号 exec sys.sp_readerrorlog 0, 1, 'li ...

  8. struts2 codebehind + actionPackages 实现Action零配置

    1.jar包:struts2-codebehind-plugin-2.2.1.1.jar 2.struts.xml:<!-- codebehind中查找action的返回结果资源时的默认文件夹 ...

  9. <ReversingEngineering>关于windows32位系统下的dll注入技术经验汇

    上个学期把自己闷在图书馆一直在看关于逆向工程技术方面的书,从入门到初级,现在也敢说自己一条腿已经迈进了这片知识的大门里,因为该博客刚开通先将一些经验记录下来,也是留给自己一方面做个参照. <逆向 ...

  10. 学习html第一天

    网站本身就是软件,软件:一种具有特定功能的程序指令的集合 C/S:C客户端-->S服务器  由程序员开发  客户去下载升级安装,比如魔兽世界 B/S:B浏览器-->S服务器  由程序员开发 ...