企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
注意事项: $configs=include_once($databasepath.'database.php'); 这里需要改哦 使用说明 ```php include_once('./Db.php'); echo "<br><pre>"; var_dump(Db::name('un_link')->field("id")->where("id=1")->fetchSql(true)->find() ); ``` **所有可用操作** 1. getAll($str)查询所有符合条件的 字符串形式(可选) 2. table($str)定义查询表名 有前缀的表名字符串形式(必填) 3. name($str)定义查询表名 没有前缀的表名 字符串形式(必填) 4. alias($str)定义查询表别名没有前缀的表名 字符串形式(必填) 5. field($str);查询字段,可以是数组也可以是字符串 6. select($str)查询所有符合条件的 字符串形式(可选) 7. count($str)统计数量,参数是要统计的字段名(可选) 8. max($str)获取最大值,参数是要统计的字段名(必须) 9. min($str) 获取最小值,参数是要统计的字段名(必须) 10. avg($str) 获取最小值,参数是要统计的字段名(必须) 11. sum 获取总分,参数是要统计的字段名(必须) 12. find($str)查询一条 字符串形式(可选) 13. order($str)排序 字符串形式 14. JOIN($str)关联 字符串形式 15. LEFTJOIN($str)左关联 字符串形式 16. RIGHTJOIN($str)右关联 字符串形式 17. where($v)查询条件,可以是数组也可以是字符串 18. group($str)分组条件 19. page(0,10)分页计算,限制数量 20. limit(0,10)限制结果数量 21. execute($sql)直接执行sql语句 22. getlatsql()查询最后一条sql 23. insert($array)添加 24. update($array)修改 25. delete($array)删除 26. fetchSql(true)用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法。 例如:true 27. failException 取消抛出异常,如果不传入任何参数,默认为关闭,用于select和find方法,例如:false 28. resultset_type=数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,可以配置数据库的 resultset_type 返回结果集: **和tp5对比没有的操作** 1、UNION 操作用于合并两个或多个 SELECT 语句的结果集。 2、force 方法用于数据集的强制索引操作,例如: 3、时间查询 4、高级查询 5、子查询 6、事务操作 7、查询事件 8、注册事件 9、如果开启数据库的调试模式的话,你可以对数据库执行的任何SQL操作进行监听,使用如下方法5.0支持存储过程,如果我们定义了一个数据库存储过程sp_query,可以使用下面的方式调用: 10、ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置database.deploy 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下 11、DISTINCT 方法用于返回唯一不同的值 。 12、Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用: 13、cache可以用于select、find、value和column方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。 14、COMMENT方法 用于在生成的SQL语句中添加注释内容 ```php <?php /** * 单例模式 **/ class Db { //保存全局实例 private static $instance; //数据库连接句柄 private $_db; public $_configs = [ // 数据库连接地址 'hostname' => "127.0.0.1", // 数据库名称 'dbname' => "", // 数据库账户 'username' => "", // 数据库密码 'password' => "E7YhH8DZJGpfdb8A", // 数据库表前缀 'prefix' => "", 'resultset_type' => false, ];//数据库配置 public $_getlatsql = [];//最后一次sql /*需要每次使用表名都重置的*/ private $_table = null;//表名 private $_join = null;//where条件 private $_where = null;//where条件 private $_order = null;//order排序 private $_limit = null;//limit限定查询 private $_group = null;//group分组 private $_alias = null;//alias定义别名 private $_field = "*";//field定义字段 private $_fetchSql=false; private $_failException=false; //数据库连接参数 //私有化构造函数,防止外界实例化对象 private function __construct() { $link = $this->_db; //$configs=include_once($databasepath.'database.php'); // var_dump($configs); // echo "<br>"; $this->_configs=empty($configs)?$this->_configs:$configs; // var_dump($this->_configs);die; 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; } } //私有化克隆函数,防止外界克隆对象 private function __clone() { } /** * 获取所有数据 * * @param <type> $table The table * * @return boolean All. */ public function getAll($table=null){ $link = $this->_db; if(!$link)return false; $sql = "SELECT * FROM {$table}"; $array=$this->execute($sql); if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){ return $array; } $data = mysqli_fetch_all($array,MYSQLI_ASSOC); return $data; } /* */ public function reset(){ $this->_failException=false; $this->_fetchSql=false; $this->_join = null;//where条件 $this->_where = null;//where条件 $this->_order = null;//order排序 $this->_limit = null;//limit限定查询 $this->_group = null;//group分组 $this->_alias = null;//alias定义别名 $this->_field = "*";//field定义字段 } /*启动事务*/ public static function startTrans($table){ return mysqli_query($this->_db, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行 } /*回滚事务*/ public static function rollback($table){ return mysqli_query($this->_db, "ROLLBACK"); // 判断当执行失败时回滚 } /*提交事务*/ public static function commit($table){ return mysqli_commit($this->_db); //执行事务 } public static function table($table){ if(!(self::$instance instanceof self)) { self::$instance = new self(); } self::$instance->_table("$table"); return self::$instance; } public function _table($table){ $this->reset(); $this->_table = $table; return $this; } public static function name($table){ if(!(self::$instance instanceof self)) { self::$instance = new self(); } self::$instance->_name("$table"); return self::$instance; } public function _name($table){ $this->reset(); $this->_table = $this->_configs['prefix'].$table; return $this; } public function alias($as){ $this->_alias = ' as '. $as; return $this; } /** * where条件 * * @param string $where The where * * @return <type> ( description_of_the_return_value ) */ public function field($field='*'){ $fieldStr = ''; $link = $this->_db; if(!$link)return $link; if(is_array($field)){ foreach ($field as $key => $value) { $fieldStr .= "'".$value."'"; } $fieldStr = $fieldStr; }elseif(is_string($field)&&!empty($field)){ $fieldStr = $field; } $this->_field = $fieldStr; 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; } if(empty($fields)){ $fields= $this->_field; } $sql = "SELECT {$fields} FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}"; // echo($sql."<br/>"); $array=$this->execute($sql); if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){ return $array; } $data = mysqli_fetch_all($array,MYSQLI_ASSOC); return $data; } /**.$this->_alias * 实现查询操作 * * @param string $fields The fields * * @return boolean ( description_of_the_return_value ) */ public function count($fields="*"){ // return $this->aggregation($fields,"count"); $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 count({$fields}) FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}"; // echo($this->_where."<br/>"); // echo($sql."<br/>"); $array=$this->execute($sql); if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){ return $array; } $data = mysqli_fetch_all($array,MYSQLI_ASSOC); // var_dump($data);die; return $data[0]["count({$fields})"]; } public function aggregation($fields,$type){ $fieldsArr = []; $fieldsArr2=[]; $link = $this->_db; if(!$link)return false; if(is_array($fields)){ $fieldsArr = $fields ; }elseif(is_string($fields)&&!empty($fields)){ $fieldsArr = explode(',', $fields); } foreach($fieldsArr as $key=>$val){ $fieldsArr2[]=$type."({$val})"; } $fieldsStr=implode(',', $fieldsArr2); $sql = "SELECT $fieldsStr FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}"; $array=$this->execute($sql); if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){ return $array; } $data = mysqli_fetch_all($array,MYSQLI_ASSOC); return $data[0]; } public function max($fields){ return $this->aggregation($fields,"max"); } public function min($fields){ return $this->aggregation($fields,"min"); } public function sum($fields){ return $this->aggregation($fields,"sum"); } public function avg($fields){ return $this->aggregation($fields,"avg"); } // /** * 实现查询操作 * * @param string $fields The fields * * @return boolean ( description_of_the_return_value ) */ public function find($fields=""){ $fieldsStr = ''; $link = $this->_db; if(!$link)return false; if(is_array($fields)){ $fieldsStr = implode(',', $fields); }elseif(is_string($fields)&&!empty($fields)){ $fieldsStr = $fields; } if(empty($fields)){ $fields= $this->_field; } $sql = "SELECT {$fields} FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}"; // echo($sql."<br/>"); $array=$this->execute($sql); if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){ return $array; } $data = mysqli_fetch_all($array,MYSQLI_ASSOC); return $data[0]; } /** * 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; } /** * JOIN * * @param string $where The where * * @return <type> ( description_of_the_return_value ) */ public function JOIN($JOIN=''){ $JOINStr = ''; $link = $this->_db; if(!$link)return $link; if(is_string($JOIN)&&!empty($JOIN)){ $JOINStr = " join ".$JOIN; } $this->_join = $JOINStr; return $this; } /** * LEFTJOIN * * @param string $where The where * * @return <type> ( description_of_the_return_value ) */ public function LEFTJOIN($JOIN=''){ $JOINStr = ''; $link = $this->_db; if(!$link)return $link; if(is_string($JOIN)&&!empty($JOIN)){ $JOINStr = " LEFT JOIN ".$JOIN; } $this->_join = $JOINStr; return $this; } /** * LEFTJOIN * * @param string $where The where * * @return <type> ( description_of_the_return_value ) */ public function RIGHTJOIN($JOIN=''){ $JOINStr = ''; $link = $this->_db; if(!$link)return $link; if(is_string($JOIN)&&!empty($JOIN)){ $JOINStr = " RIGHT JOIN ".$JOIN; } $this->_join = $JOINStr; 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(is_array($value)){ if($value == end($where)){ $whereStr .= "`".$key."` ".$value[0]." '".$value[1]."'"; }else{ $whereStr .= "`".$key."` ".$value[0]." '".$value[1].""."' AND "; } }else 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; } /** *page 分页计算,限定查询 * * @param string $limit The limit * * @return <type> ( description_of_the_return_value ) */ public function page($page='',$limit=''){ $limitStr = ''; $link = $this->_db; if(!$link)return $link; if(is_array($page)){ list($page,$limit) = $page; }else if((is_string($page)||!empty($page))&&empty($limit)){ list($page,$limit) = explode(",",$page); } if($page<1){ $page=1; } if(empty($limit)&&!empty($page)){ $limitStr = "LIMIT ".$page; }else{ $limitStr = "LIMIT ".($page-1)*$limit.",".$limit; } /*Start limit*/ $this->_limit = $limitStr; return $this; } /** * limit限定查询 * * @param string $limit The limit * * @return <type> ( description_of_the_return_value ) */ public function limit($slimit='',$limit=''){ $limitStr = ''; $link = $this->_db; if(!$link)return $link; if(is_array($slimit)){ list($slimit,$limit) = $slimit; }else if((is_string($slimit)||!empty($slimit))&&empty($limit)){ list($slimit,$limit) = explode(",",$slimit); } if($slimit>0){ $slimit = $slimit-1; }else{ $slimit=0; } if(empty($limit)&&!empty($slimit)){ $limitStr = "LIMIT ".$slimit; }else{ $limitStr = "LIMIT ".$slimit.",".$limit; } //var_dump($limitStr);die; /*Start limit*/ $this->_limit = $limitStr; return $this; } public function fetchSql($str){ $this->_fetchSql=$str; return $this; } public function failException($str){ $this->_failException=$str; 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; $this->_getlatsql=[$this->_table=>$sql]; if($this->_fetchSql){ return $sql; } $res = mysqli_query($this->_db,$sql); // var_dump($sql);die; // var_dump($res["current_field"]); if(!$res){ if($this->_failException){ return null; }else{ $errors = mysqli_error_list($this->_db); $this->ShowException("报错啦!<br/>错误号:".$errors[0]['errno']."<br/>SQL错误状态:".$errors[0]['sqlstate']."<br/>错误信息:".$errors[0]['error']); die(); } } return $res; } /** * 执行sql语句 * * @param <type> $sql The sql * * @return boolean ( description_of_the_return_value ) */ public function getlatsql(){ return $this->_getlatsql[$this->_table]; } /** * 插入数据 * * @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})"; // var_dump( $sql);die; 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>"; } } } ```