1. 程式人生 > >PHP自己封裝一個原生mysql資料庫工具類--進階常用類仿PDO模式

PHP自己封裝一個原生mysql資料庫工具類--進階常用類仿PDO模式

<?php
header('content-type:text/html;charset=utf-8');
error_reporting(E_ALL ^ E_DEPRECATED);

// 設計一個mysql資料庫操作類

$config=array(
    'host'=>"localhost",
    'port'=>3306,
    'user'=>"root",
    'pass'=>'',
    'char'=>"utf8",
    'db'=>"test"
    );

class MYSQL{

  private  $link=null;
    private $host;
    private $port;
    private $user;
    private $pass;
    private $char;
    private $db;

  function __construct($config){  //一例項化 就會連線上這個資料庫  把陣列載入進來
            // 把連線過來的資料庫資訊儲存起來,留以它用
        $this->host=!empty($config['host']) ? $config['host'] : "localhost";
        $this->port=!empty($config['port']) ? $config['port'] : "3306";
        $this->user=!empty($config['user']) ? $config['user'] : "root";
        $this->pass=!empty($config['pass']) ? $config['pass'] : "";
        $this->char=!empty($config['char']) ? $config['char'] : "utf8";
        $this->db=!empty($config['db']) ? $config['db'] : "test";


      
[email protected]
_connect("{$config['host']}:{$config['port']}","{$config['user']}","{$config['pass']}"); //   mysql_query("set names {$charset}"); //   mysql_query("use {$db}");        $this->charset($this->char);        $this->usedb($this->db);      //  echo "當前字元編碼為:".$this->char."陣列的字元編碼為".$config['char'];   }   function charset($charset){  // 設定字元編碼     mysql_query("set names {$charset} ");   }   function usedb($db){  //更改要使用的資料庫      mysql_query("use {$db}");      echo "已切換資料庫 {$db} <br>";   }   function closeDB(){  //關閉資料庫       mysql_close($this->link);       echo "已關閉資料庫連線";   }   function exec($sql){ // 返回增,刪,改語句的返回值為真假boolen  // $result= mysql_query($chaxun);  // /  return print_r($result).'出來了';  // if($result===false){  //       // 語句執行失敗,處理失敗 返回錯誤代號  //      echo  mysql_error($link);  //      echo "資料執行失敗";  //      exit();  //       }else{  //          //語句執行成功,返回true  //          echo "資料執行成功了";  //          return true;  //       }        $result=$this->query($sql);        return true; //因為是增刪改語句,所以直接返回true就行了   }   function getOneRow($sql){  //執行一條返回一行資料的語句,返回一維陣列  //result = mysql_query($sql);  // if($result===false){  //     echo  mysql_error($link);  //     echo "資料執行失敗";  //     exit();  //      }else{  //         echo "資料執行成功了";  //         return true;  //      }  $result =$this->query($sql); // 一行代替幾行程式碼   $arr=mysql_fetch_assoc($result);   return $arr;   }   function getRows($sql){ // 執行一條返回多行資料的語句,返回二維陣列     // $result = mysql_query($sql);      $result=$this->query($sql);   $array=array();   while ($arr=mysql_fetch_assoc($result)) {       # code...       $array[]=$arr; // 此時就為二維陣列了   }   return $array;   }   function getOnedata($sql){ //執行一條返回一個數據的語句,返回一個直接值   //   $result=mysql_query($sql); //   //   if($result===false){   //       echo "資料執行失敗";   //       echo "請參考如下資訊:".mysql_error();   //       die();   //   }echo "資料執行成功";      $result=$this->query($sql);// 一行代替上面幾行     $arr=mysql_fetch_row($result);     $data=$arr[0];  // 因為只取出一行,所以直接取出索引為0的陣列即可了     return $data;   }   function query($sql){  // 僅僅用於執行sql語句,然後直接返回sql執行的結果    $result=mysql_query($sql);     if($result===false){         echo "資料執行失敗";         echo "請參考如下資訊:".mysql_error();         die();     }echo "資料執行成功";     return $result;   } }  ?>

根據上次的基礎類改進了下,縮短了很多程式碼量。下面一個我會把單例模式也加進去,程式碼都是可以直接執行的,執行環境是wamp整合環境。

如果有問題可用直接下方留言,作為PHP中級階層的我(目前大學尚未畢業自學水平)也有很多不熟悉和不懂的地方,如果某些地方做的不太好,歡迎大神前來指正,多多交流!