文章出處
View Code
View Code
文章列表
設計目標:
1,該類一實例化,就可以自動連接上mysql數據庫;
2,該類可以單獨去設定要使用的連接編碼(set names XXX)
3,該類可以單獨去設定要使用的數據庫(use XXX);
4,可以主動關閉連接;

<?php /* 設計一個類:mysql數據庫操作類 設計目標: 1,該類一實例化,就可以自動連接上mysql數據庫; 2,該類可以單獨去設定要使用的連接編碼(set names XXX) 3,該類可以單獨去設定要使用的數據庫(use XXX); 4,可以主動關閉連接; */ class MySqlDB{ // 鏈接資源 private $link = null; // 構造方法 function __construct($host='localhost', $port=3306, $user='root', $pwd='', $charset='utf8', $dbName='mysql'){ $this->link = @mysql_connect("$host:$port", $user, $pwd); // @:阻止警告輸出 mysql_query("set names $charset"); // 設置編碼 mysql_query("use $dbName"); // 設置使用的數據庫 } // 可設置鏈接編碼 function setCharset($charset){ mysql_query("set names $charset"); } // 可設置使用的數據庫 function selectDB($dbName){ mysql_query("use $dbName"); } // 可關閉鏈接 function closeDB(){ mysql_close($this->link); } } # ************************* 測試 ************************* $host = 'localhost'; $port = 3306; $user = 'root'; $pwd = '123456'; $charset = 'utf8'; $dbname = 'db1'; $db = new MySqlDB($host, $port, $user, $pwd, $charset, $dbname); // 測試是否鏈接成功 $set = mysql_query("select * from student"); var_dump($set); echo "<br>"; // 測試修改編碼 $db->setCharset('gbk'); //********** 顯示數據 ********** echo "<table border='1'>"; echo "<tr>"; // 獲得列數 $field_count = mysql_num_fields($set); for($i=0; $i<$field_count; $i++){ // 獲得第 i 列的名稱 $field_name = mysql_field_name($set, $i); echo "<td>". $field_name . "</td>"; } echo "</tr>"; // 遍歷每一行記錄 while($rec = mysql_fetch_array($set)){ echo "<tr>"; for($i=0; $i<$field_count; $i++){ // 獲取列名 $field_name = mysql_field_name($set, $i); // 獲取該記錄,改行的數據 echo "<td>" . $rec[$field_name] . "</td>"; } echo "</tr>"; } echo "</table>"; // ********* end ********** // 測試關閉鏈接 $db->closeDB(); $set = @mysql_query("select * from student"); var_dump($set); echo "<br>"; ?>
改進: 使用單例

<?php /* 設計一個類:mysql數據庫操作類 設計目標: 1,該類一實例化,就可以自動連接上mysql數據庫; 2,該類可以單獨去設定要使用的連接編碼(set names XXX) 3,該類可以單獨去設定要使用的數據庫(use XXX); 4,可以主動關閉連接; */ class MySQLDB{ private $link = null; // 用于存儲成功鏈接后的資源 // 屬性, 存儲鏈接數據庫的基本信息 private $host; private $port; private $user; private $pwd; private $charset; private $dbname; // 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->pwd = !empty($config['pwd']) ? $config['pwd'] : ""; $this->charset = !empty($config['charset']) ? $config['charset'] : "utf8"; $this->dbname = !empty($config['dbname']) ? $config['dbname'] : "mysql"; // 鏈接數據庫 $this->link = mysql_connect("{$this->host}:{$this->port}", "$this->user", "$this->pwd") or die("鏈接失敗"); // 設定編碼 //mysql_query("set names {$config['charset']}"); $this->setCharset($config['charset']); // 設定要使用的數據庫名 //mysql_query("use {$config['dbname']}"); $this->selectDB($config['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(){} // 可設定要使用的編碼 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); } // 執行 sql 語句,進行錯誤處理,并返回結果 private function query($sql){ $result = mysql_query($sql, $this->link); if($result === false){ // 失敗處理 echo "sql語句執行失敗,請參考如下信息:"; echo "<br />錯誤代碼: " . mysql_errno(); echo "<br />錯誤信息: " . mysql_error(); echo "<br />錯誤語句: " . $sql; die(); } return $result; } // 執行一條 增刪改 sql語句,返回真或假 function exec($sql){ $result = $this->query($sql); return true; } // 執行一條 sql 語句,返回一行記錄 function getOneRow($sql){ $result = $this->query($sql); $rec = mysql_fetch_assoc($result); // 提前銷毀結果集,否則需要等待頁面結束才能自動銷毀 mysql_free_result($result); return $rec; } // 執行一條 sql 語句,返回多行記錄 function getRows($sql){ $result = $this->query($sql); $arr = array(); while($rec = mysql_fetch_assoc($result)){ $arr[] = $rec; // 二維數組 } mysql_free_result($result); return $arr; } // 執行一條 sql 語句,直接返回一個結果 // 類似于: select count(*) as c from user_list function getOneData($sql){ $result = $this->query($sql); $rec = mysql_fetch_row($result); $data = $rec[0]; mysql_free_result($result); return $data; } } ?>
-------------->>>
文章列表
全站熱搜