-
- class HRDB{
- protected $pdo;
- protected $res;
- protected $config;
-
- /*构造函数*/
- function __construct($config){
- $this->Config = $config;
- $this->connect();
- }
-
- /*数据库连接*/
- public function connect(){
- $this->pdo = new PDO($this->Config['dsn'], $this->Config['name'], $this->Config['password']);
- $this->pdo->query('set names utf8;');
- //把结果序列化成stdClass
- //$this->pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
- //自己写代码捕获Exception
- $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- }
-
- /*数据库关闭*/
- public function close(){
- $this->pdo = null;
- }
-
- public function query($sql){
- $res = $this->pdo->query($sql);
- if($res){
- $this->res = $res;
- }
- }
- public function exec($sql){
- $res = $this->pdo->exec($sql);
- if($res){
- $this->res = $res;
- }
- }
- public function fetchAll(){
- return $this->res->fetchAll();
- }
- public function fetch(){
- return $this->res->fetch();
- }
- public function fetchColumn(){
- return $this->res->fetchColumn();
- }
- public function lastInsertId(){
- return $this->res->lastInsertId();
- }
-
- /**
- * 参数说明
- * int $debug 是否开启调试,开启则输出sql语句
- * 0 不开启
- * 1 开启
- * 2 开启并终止程序
- * int $mode 返回类型
- * 0 返回多条记录
- * 1 返回单条记录
- * 2 返回行数
- * string/array $table 数据库表,两种传值模式
- * 普通模式:
- * 'tb_member, tb_money'
- * 数组模式:
- * array('tb_member', 'tb_money')
- * string/array $fields 需要查询的数据库字段,允许为空,默认为查找全部,两种传值模式
- * 普通模式:
- * 'username, password'
- * 数组模式:
- * array('username', 'password')
- * string/array $sqlwhere 查询条件,允许为空,两种传值模式
- * 普通模式:
- * 'and type = 1 and username like "%os%"'
- * 数组模式:
- * array('type = 1', 'username like "%os%"')
- * string $orderby 排序,默认为id倒序
- */
- public function select($debug, $mode, $table, $fields="*", $sqlwhere="", $orderby="tbid desc"){
- //参数处理
- if(is_array($table)){
- $table = implode(', ', $table);
- }
- if(is_array($fields)){
- $fields = implode(', ', $fields);
- }
- if(is_array($sqlwhere)){
- $sqlwhere = ' and '.implode(' and ', $sqlwhere);
- }
- //数据库操作
- if($debug === 0){
- if($mode === 2){
- $this->query("select count(tbid) from $table where 1=1 $sqlwhere");
- $return = $this->fetchColumn();
- }else if($mode === 1){
- $this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
- $return = $this->fetch();
- }else{
- $this->query("select $fields from $table where 1=1 $sqlwhere order by $orderby");
- $return = $this->fetchAll();
- }
- return $return;
- }else{
- if($mode === 2){
- echo "select count(tbid) from $table where 1=1 $sqlwhere";
- }else if($mode === 1){
- echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
- }
- else{
- echo "select $fields from $table where 1=1 $sqlwhere order by $orderby";
- }
- if($debug === 2){
- exit;
- }
- }
- }
-
- /**
- * 参数说明
- * int $debug 是否开启调试,开启则输出sql语句
- * 0 不开启
- * 1 开启
- * 2 开启并终止程序
- * int $mode 返回类型
- * 0 无返回信息
- * 1 返回执行条目数
- * 2 返回最后一次插入记录的id
- * string/array $table 数据库表,两种传值模式
- * 普通模式:
- * 'tb_member, tb_money'
- * 数组模式:
- * array('tb_member', 'tb_money')
- * string/array $set 需要插入的字段及内容,两种传值模式
- * 普通模式:
- * 'username = "test", type = 1, dt = now()'
- * 数组模式:
- * array('username = "test"', 'type = 1', 'dt = now()')
- */
- public function insert($debug, $mode, $table, $set){
- //参数处理
- if(is_array($table)){
- $table = implode(', ', $table);
- }
- if(is_array($set)){
- $set = implode(', ', $set);
- }
- //数据库操作
- if($debug === 0){
- if($mode === 2){
- $this->query("insert into $table set $set");
- $return = $this->lastInsertId();
- }else if($mode === 1){
- $this->exec("insert into $table set $set");
- $return = $this->res;
- }else{
- $this->query("insert into $table set $set");
- $return = NULL;
- }
- return $return;
- }else{
- echo "insert into $table set $set";
- if($debug === 2){
- exit;
- }
- }
- }
-
- /**
- * 参数说明
- * int $debug 是否开启调试,开启则输出sql语句
- * 0 不开启
- * 1 开启
- * 2 开启并终止程序
- * int $mode 返回类型
- * 0 无返回信息
- * 1 返回执行条目数
- * string $table 数据库表,两种传值模式
- * 普通模式:
- * 'tb_member, tb_money'
- * 数组模式:
- * array('tb_member', 'tb_money')
- * string/array $set 需要更新的字段及内容,两种传值模式
- * 普通模式:
- * 'username = "test", type = 1, dt = now()'
- * 数组模式:
- * array('username = "test"', 'type = 1', 'dt = now()')
- * string/array $sqlwhere 修改条件,允许为空,两种传值模式
- * 普通模式:
- * 'and type = 1 and username like "%os%"'
- * 数组模式:
- * array('type = 1', 'username like "%os%"')
- */
- public function update($debug, $mode, $table, $set, $sqlwhere=""){
- //参数处理
- if(is_array($table)){
- $table = implode(', ', $table);
- }
- if(is_array($set)){
- $set = implode(', ', $set);
- }
- if(is_array($sqlwhere)){
- $sqlwhere = ' and '.implode(' and ', $sqlwhere);
- }
- //数据库操作
- if($debug === 0){
- if($mode === 1){
- $this->exec("update $table set $set where 1=1 $sqlwhere");
- $return = $this->res;
- }else{
- $this->query("update $table set $set where 1=1 $sqlwhere");
- $return = NULL;
- }
- return $return;
- }else{
- echo "update $table set $set where 1=1 $sqlwhere";
- if($debug === 2){
- exit;
- }
- }
- }
-
- /**
- * 参数说明
- * int $debug 是否开启调试,开启则输出sql语句
- * 0 不开启
- * 1 开启
- * 2 开启并终止程序
- * int $mode 返回类型
- * 0 无返回信息
- * 1 返回执行条目数
- * string $table 数据库表
- * string/array $sqlwhere 删除条件,允许为空,两种传值模式
- * 普通模式:
- * 'and type = 1 and username like "%os%"'
- * 数组模式:
- * array('type = 1', 'username like "%os%"')
- */
- public function delete($debug, $mode, $table, $sqlwhere=""){
- //参数处理
- if(is_array($sqlwhere)){
- $sqlwhere = ' and '.implode(' and ', $sqlwhere);
- }
- //数据库操作
- if($debug === 0){
- if($mode === 1){
- $this->exec("delete from $table where 1=1 $sqlwhere");
- $return = $this->res;
- }else{
- $this->query("delete from $table where 1=1 $sqlwhere");
- $return = NULL;
- }
- return $return;
- }else{
- echo "delete from $table where 1=1 $sqlwhere";
- if($debug === 2){
- exit;
- }
- }
- }
- }
|