thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)
為了方便操作Mysql數(shù)據(jù)庫, 封裝類似thinkphp連貫操作數(shù)據(jù)庫的Db類<?php
header("Content-Type:text/html;charset=utf-8");
/**
*php操作mysql的工具類
*/
class?Db{
private?$_db?=?null;//數(shù)據(jù)庫連接句柄
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'
);//數(shù)據(jù)庫配置
/**
*?構(gòu)造函數(shù),連接數(shù)據(jù)庫
*/
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;
}
}
/**
*?獲取所有數(shù)據(jù)
*
*?@param?????????$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;
}
/**
*?實現(xiàn)查詢操作
*
*?@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???????(?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???????(?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;
}
/**
*?執(zhí)行sql語句
*
*?@param?????????$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("報錯啦!
錯誤號:".$errors[0]['errno']."
SQL錯誤狀態(tài):".$errors[0]['sqlstate']."
錯誤信息:".$errors[0]['error']);
die();
}
return?$res;
}
/**
*?插入數(shù)據(jù)
*
*?@param?????????$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;
}
/**
*?更新數(shù)據(jù)
*
*?@param????????$data???The?data
*
*?@return???????(?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;
}
/**
*?刪除數(shù)據(jù)
*
*?@return???????(?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????????$var????The?variable
*/
private?function?ShowException($var){
if(is_bool($var)){
var_dump($var);
}else?if(is_null($var)){
var_dump(NULL);
}else{
echo?"
".print_r($var,true)."";}
}
}
$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());
總結(jié)
以上是生活随笔為你收集整理的thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java的排序_java排序
- 下一篇: 两点之间的连线java_java计算图两