PHP資料庫操作類

來源:互聯網
上載者:User

標籤:處理   close   mysqldb   erro   擷取   設定   情況   etc   資料庫   

<?php/*設計一個類:mysql資料庫操作類設計目標:1,該類一執行個體化,就可以自動連接上mysql資料庫;2,該類可以單獨去設定要使用的串連編碼(set  names  XXX)3,該類可以單獨去設定要使用的資料庫(use  XXX);4,可以主動關閉串連;*/class MySQLDB{private $link = null;//用於儲存串連成功後的“資源”//定義一些屬性,以儲存串連資料庫的6項基本資料private $host;private $port;private $user;private $pass;private $charset;private $dbname;//實現單例第2步:用於儲存唯一的單例對象:private static $instance = null;//實現單例第3步:static  function GetInstance($config){//if( !isset( self::$instance )){//還沒有該對象if( !(self::$instance instanceof self) ){//這一行代替上一行的判斷,更常見self::$instance = new self($config); //就建立並存起來}return self::$instance;}//實現單例第4步:私人化這個複製的魔術方法private function __clone(){}//實現單例第1步:private 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->charset = !empty($config[‘charset‘]) ? $config[‘charset‘] : "utf8" ;$this->dbname = !empty($config[‘dbname‘]) ? $config[‘dbname‘] : "php39" ;//然後串連資料庫!$this->link  =  mysql_connect("{$this->host}:{$this->port}", "{$this->user}", "{$this->pass}") or die("串連失敗");//設定編碼//mysql_query("set names {$config[‘charset‘]}");$this->setCharset( $this->charset );//這一行代替上一行//選定要使用的資料庫名//mysql_query("use  {$config[‘dbname‘]}");$this->selectDB( $this->dbname );//這一行代替上一行}//可以設定要使用的串連編碼function setCharset( $charset ){mysql_query("set names $charset", $this->link);}//可以設定要使用的資料庫function selectDB($dbname){mysql_query("use  $dbname", $this->link);}//可關閉串連function closeDB(){mysql_close($this->link);}//這個方法為了執行一條增刪改語句,它可以返回真假結果function exec($sql){$result = $this->query($sql);return true;//因為是增刪改語句,直接返回true就可以}//這個方法為了執行一條返回一行資料的語句,它可以返回一維數組//數組的下標,就是sql語句中的取出的欄位名;function GetOneRow($sql){$result = $this->query($sql);//這裡開始處理資料,以返回數組。此時$result是一個結果集(單行資料)$rec = mysql_fetch_assoc( $result );//取出第一行資料(其實應該只有這一行)mysql_free_result( $result );//提前釋放資源(銷毀結果集),否則需要等到頁面結束才自動銷毀return $rec;}//這個方法為了執行一條返回多行資料的語句,它可以返回二維數組function GetRows($sql){$result = $this->query($sql);//這裡開始處理資料,以返回數組。此時$result是一個結果集(且是多行資料)$arr = array();//空數組,用於存放要返回的結果數組(二維)while ( $rec = mysql_fetch_assoc( $result ) ){$arr[] = $rec;//此時,$arr就是二維數組了!}mysql_free_result( $result );//提前釋放資源(銷毀結果集),否則需要等到頁面結束才自動銷毀return $arr;}//這個方法為了執行一條返回一個資料的語句,它可以返回一個直接值//這條語句類似這樣:select  count(*) as c  from  user_listfunction GetOneData($sql){$result = $this->query($sql);//這裡開始處理資料,以返回一個資料(標量資料)!$rec = mysql_fetch_row( $result );//這裡也可以使用fetch_array這個函數!//這裡得到$rec仍然是一個數組,但其類似這樣://  array ( 0=> 5 );或者 array( 0=>‘user1‘);$data = $rec[0];mysql_free_result( $result );//提前釋放資源(銷毀結果集),否則需要等到頁面結束才自動銷毀return $data;}//這個方法用於執行任何sql語句,並進行錯誤處理,或返回執行結果;private function query( $sql ){$result = mysql_query($sql, $this->link);if( $result === false){//對任何sql語句,執行失敗,都需要處理這種失敗情況:echo "<p>sql語句執行失敗,請參考如下資訊:";echo "<br />錯誤代號:" . mysql_errno();//擷取錯誤代號echo "<br />錯誤資訊:" . mysql_error();//擷取錯誤提示內部echo "<br />錯誤語句:" . $sql;die();}return $result;//返回的是“執行的結果”}}?>

 

PHP資料庫操作類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.