-
- 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(){
- }
- 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 "從$table 選$fields,其中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()')
- */
- 公用函數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("插入$table set $set");
- $return = $this->lastInsertId();
- }else if($mode === 1) {
- $this->exec("插入$table set $set");
- $return = $this->res;
- }else{
- $this->query ("插入$表集$set");
- $return = NULL;
- }
- return $return;
- }else{
- echo "插入$表集$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%"')
- */
- 公用函數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("從$table where 1=1 $sqlwhere 刪除");
- $return = $this->res ;
- }else{
- $this->query("從$table where 1=1 $sqlwhere 刪除");
- $return = NULL;
- }
- return $return;
- }else{
- echo "從$table where 1=1 $sqlwhere 刪除";
- if($debug === 2){
- exit;
- }
- }
- }
- }
複製程式碼
|