php db类 应用实例,PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
本文实例讲述了PHP封装类似thinkphp连贯操作数据库Db类与简单应用。分享给大家供大家参考,具体如下:
header("Content-Type:text/html;charset=utf-8");
/**
*php操作mysql的工具类
*/
classDb{
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'
);//数据库配置
/**
*构造函数,连接数据库
*/
publicfunction__construct(){
$link=$this->_db;
if(!$link){
$db=mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);
mysqli_query($db,"setnamesutf8");
if(!$db){
$this->ShowException("错误信息".mysqli_connect_error());
}
$this->_db=$db;
}
}
/**
*获取所有数据
*
*@param$tableThetable
*
*@returnbooleanAll.
*/
publicfunctiongetAll($table=null){
$link=$this->_db;
if(!$link)returnfalse;
$sql="SELECT*FROM{$table}";
$data=mysqli_fetch_all($this->execute($sql));
return$data;
}
publicfunctiontable($table){
$this->_table=$table;
return$this;
}
/**
*实现查询操作
*
*@paramstring$fieldsThefields
*
*@returnboolean(description_of_the_return_value)
*/
publicfunctionselect($fields="*"){
$fieldsStr='';
$link=$this->_db;
if(!$link)returnfalse;
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排序
*
*@paramstring$orderTheorder
*
*@returnboolean(description_of_the_return_value)
*/
publicfunctionorder($order=''){
$orderStr='';
$link=$this->_db;
if(!$link)returnfalse;
if(is_string($order)&&!empty($order)){
$orderStr="ORDERBY".$order;
}
$this->_order=$orderStr;
return$this;
}
/**
*where条件
*
*@paramstring$whereThewhere
*
*@return(description_of_the_return_value)
*/
publicfunctionwhere($where=''){
$whereStr='';
$link=$this->_db;
if(!$link)return$link;
if(is_array($where)){
foreach($whereas$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分组
*
*@paramstring$groupThegroup
*
*@returnboolean(description_of_the_return_value)
*/
publicfunctiongroup($group=''){
$groupStr='';
$link=$this->_db;
if(!$link)returnfalse;
if(is_array($group)){
$groupStr="GROUPBY".implode(',',$group);
}elseif(is_string($group)&&!empty($group)){
$groupStr="GROUPBY".$group;
}
$this->_group=$groupStr;
return$this;
}
/**
*limit限定查询
*
*@paramstring$limitThelimit
*
*@return(description_of_the_return_value)
*/
publicfunctionlimit($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$sqlThesql
*
*@returnboolean(description_of_the_return_value)
*/
publicfunctionexecute($sql=null){
$link=$this->_db;
if(!$link)returnfalse;
$res=mysqli_query($this->_db,$sql);
if(!$res){
$errors=mysqli_error_list($this->_db);
$this->ShowException("报错啦!
错误号:".$errors[0]['errno']."
SQL错误状态:".$errors[0]['sqlstate']."
错误信息:".$errors[0]['error']);
die();
}
return$res;
}
/**
*插入数据
*
*@param$dataThedata
*
*@returnboolean(description_of_the_return_value)
*/
publicfunctioninsert($data){
$link=$this->_db;
if(!$link)returnfalse;
if(is_array($data)){
$keys='';
$values='';
foreach($dataas$key=>$value){
$keys.="`".$key."`,";
$values.="'".$value."',";
}
$keys=rtrim($keys,',');
$values=rtrim($values,',');
}
$sql="INSERTINTO`{$this->_table}`({$keys})VALUES({$values})";
mysqli_query($this->_db,$sql);
$insertId=mysqli_insert_id($this->_db);
return$insertId;
}
/**
*更新数据
*
*@param$dataThedata
*
*@return(description_of_the_return_value)
*/
publicfunctionupdate($data){
$link=$this->_db;
if(!$link)return$link;
if(is_array($data)){
$dataStr='';
foreach($dataas$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(description_of_the_return_value)
*/
publicfunctiondelete(){
$link=$this->_db;
if(!$link)return$link;
$sql="DELETEFROM`{$this->_table}`{$this->_where}";
$res=$this->execute($sql);
return$res;
}
/**
*异常信息输出
*
*@param$varThevariable
*/
privatefunctionShowException($var){
if(is_bool($var)){
var_dump($var);
}elseif(is_null($var)){
var_dump(NULL);
}else{
echo"".print_r($var,true)."";
}
}
}
$db=newDb();
//查询操作
var_dump($db->table('user')->where('id>2')->order('iddesc')->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());
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:PHP实现的连贯操作、链式操作实例PHP简单数据库操作类实例【支持增删改查及链式操作】PHP三种方式实现链式操作详解PHP对象链式操作实现原理分析PHP实现链式操作的核心思想PHP实现链式操作的原理详解PHP实现链式操作的三种方法详解php类自动装载、链式操作、魔术方法实现代码thinkPHP5框架数据库连贯操作之cache()用法分析thinkphp连贯操作实例分析php链式操作的实现方式分析
php db类 应用实例,PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例相关推荐
- thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)
为了方便操作Mysql数据库, 封装类似thinkphp连贯操作数据库的Db类<?php header("Content-Type:text/html;charset=utf-8&qu ...
- 【转载苏飞的博客】一个操作数据库的类(备份,还原,分离,附加,添加删除用户等操作)
一个操作数据库的类(备份,还原,分离,附加,添加删除用户等操作) by sufeinet, 地址: cnblogs.com/sufei/archive/2011/09/13/2174716.html ...
- php单文件上传实例,php封装的单文件(图片)上传类完整实例
本文实例讲述了php封装的单文件(图片)上传类.分享给大家供大家参考,具体如下: //封装php中的单文件(图片)上传类 /* //参数1:$file 文件数组 5个属性值 name,type,siz ...
- 数据库封装 sql server mysql_mysql操作数据库进行封装实现增删改查功能
SqlTool.class.php class SqlTool{ private $conn; private $host = "localhost"; private $user ...
- C#.NET操作数据库通用类(MS SQL Server篇)
下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句.执行存储过程.以下是其详细实现过程,希望大家共同修改优化之.稍后将介绍如何使用它 ...
- C#.NET操作数据库通用类
下面给出了一个C#操作MS SQL Server 数据库的通用类,通过该类可以对数据库进行任何操作,包括执行SQL语句.执行存储过程.以下是其详细实现过程,希望大家共同修改优化之.稍后将介绍如何使用它 ...
- python操作数据库工具类
<pre name="code" class="python">#!/usr/bin/python # -*- coding: utf-8 -*- ...
- dropzone java实例_Java实现拖拽文件上传dropzone.js的简单使用示例代码
Java实习生一枚,前端知识薄弱,最近因为工作需要,做了一个拖拽文件上传的功能,发现dropzone.js挺不错的,特地做个笔记. 自己写的拖拽文件至一个按钮上传的功能,前端及java代码如下: js ...
- PHP面向对象操作数据库--MySQLI类
自学PHP,这几天学到了连接数据库,干脆把MySQLI的API全过一遍吧! MySQLI 代表PHP和Mysql数据库之间的一个连接. 1.mysqli::affected_rows ...
最新文章
- 小记,springboot项目中自己常用的logback配置文件
- 阿里云maven镜像地址
- 使用pip将Python包安装到不同的目录中?
- 计算勒让德多项式的系数
- 民生银行数据库智能运维的探索与实践
- web前端入门学习 css(2)
- ora-oracle,oracle:ora-01507错误
- vue添加html开启服务器_vue服务端渲染添加缓存
- linux安装 soapui_SOAP测试工具-SoapUI For Linux下载V5.2.1免费版-西西软件下载
- jquery中的ajax写法
- 数十年从事java工作的经验分享
- 常见知识库对比:DBpedia/Freebase/OpenCyc/Wikidata/YAGO3
- linux 批量监控软件,Linux/Unix/Windows批量管理监控服务器软件
- 一个读取3DS文件的类CLoad3DS浅析Ⅰ
- mysql auto increment offset_MySQL auto_increment_increment,auto_increment_offset 用法
- 恒温烙铁使用注意事项
- java课程设计(学生信息管理系统设计)+数据库
- 安装 CC2531 USB Dongle(驱动精灵)
- android x86主动防御,360手机卫士首家实现X86架构手机主动防御
- 关于 Juju 的十二个热点问题
热门文章
- Bzoj 3166 [Heoi2013] Alo 题解
- Hibernate - HHH000352: Unable to release batch statement
- SecureCRT使用小技巧
- python成长之路第三篇(2)_正则表达式
- WSS(Windows Storage Server)2008R2使用指南(三)配置及使用篇
- centos下yum升级python到2.6
- 在Ubuntu下rtorrent编译安装笔记
- 手动为linux系统添加新用户——过程详解
- cookie 和 session 区别
- 课时22:函数:递归是神马