DB.class.php
<?php class DB{ //主機地址 var $host; //用戶名 var $username; //密碼 var $password; //數據庫名 var $dbname; //字符集 var $charset; //數據庫連接對象,主要用在mysql_query($sql,$this->con); private $con; //外界獲取的mysqlDB類操作對象 public static $dao; //獲得mysqlDB類對象(單例) public static function getInstance($config){ if(!isset(self::$dao)){ self::$dao = new self($config); } return self::$dao; } //private禁止外部new,減少new帶來的開銷,並設置默認的配置。 private function __construct($config){ $this->host = isset($config['host'])?$config['host']:'localhost'; $this->port = isset($config['port'])?$config['port']:'3306'; $this->username = isset($config['username'])?$config['username']:'root'; $this->password = isset($config['password'])?$config['password']:'root'; $this->dbname = isset($config['dbname'])?$config['dbname']:'test'; $this->charset = isset($config['charset'])?$config['charset']:'utf8'; //連接數據庫 $this->con = $this->connect(); //設置數據庫名,默認為test $this->useDb($this->dbname); //設置字符集,默認為utf8。 $this->setCharset($this->charset); } //禁止外部克隆 private function __clone(){ } //連接不成功在這個分段找。 ////////////////////////////////////////////////////// //連接數據庫 public function connect(){ $con = mysql_connect("$this->host:$this->port","$this->username","$this->password") or die("連接數據庫失敗"); return $con; } //1.執行增、刪、改sql語句 public function exec($sql){ $res = mysql_query($sql,$this->con); if($res){ // echo "<br/>sql語句:".$sql."<br>"; // var_dump($res); return true; //要是增刪改有問題可以在這里輸出sql調試。 }else{ echo "<br/>sql語句:".$sql; echo "<br/出錯信息>:".mysql_error(); echo "<br/出錯代碼>:".mysql_errno(); exit; } } //額外設置字符集 public function setCharset($charset){ $sql = "set names '$charset'"; $this->exec($sql) or die("set"); //die(); } //額外設置數據庫 public function useDb($dbname){ $sql = "use $dbname"; $this->exec($sql) or die("use");//or die()函數前面需返回對應的true或false; } //////////////////////////////////////////////////////// //查找出錯在這個部分找。 //4.將查到的結果集轉為單個數據,這里是索引數組的第一個字段。 public function getOne($sql){ $rec = mysql_query($sql,$this->con); $res = mysql_fetch_row($rec); if($res){ return $res[0]; }else{ return false; } } //可能修改的函數全部放在上面,以便查找。下方函數基本不會修改。 //編號1~4是高頻率使用的函數。 //2.獲取一行數據(一維) public function getRow($sql){ $rec = mysql_query($sql,$this->con); $res = mysql_fetch_assoc($rec); if($res){ return $res; }else{ return false; } } //3.獲取所有數據(二維) public function getAll($sql){ $rec = mysql_query($sql,$this->con); $arr = array();//定義 一個數組 while($res = mysql_fetch_assoc($rec)){ $arr[] = $res; } if($arr){ return $arr; }else{ return false; } } } $dao = DB::getInstance(null); ?> <?php include_once("DB.class.php"); $sql = "select * from goods where id = 1"; //.獲取一行數據(一維) $res = $dao->getRow($sql); var_dump($res); //以上的getRow函數只是舉例,具體如何使用這個工具,首先要在你的php文件中include這個工具類,即include_once("DB.class.php"); //1.要看你的sql語句查回的數據是一維的,還是二維的,或者單個數據。 //對應的函數是getROW,getAll,getOne。 //2.增刪改統一用exec。 //3.數據庫的連接配置在構造構造函數中修改。 ?> 注意事項: 1.文件DB.class.php建好后。 2.在你需要操作數據庫接的文件中include這個文件,上面有示例。 3.使用之前必須把數據庫名改成你的數據庫名。這個是最重要的,也是最容易忘記的。
引用
<?php include_once("DB.class.php"); $sql = "select * from goods where id = 1"; //.獲取一行數據(一維) $res = $dao->getRow($sql); var_dump($res); //以上的getRow函數只是舉例,具體如何使用這個工具,首先要在你的php文件中include這個工具類,即include_once("DB.class.php"); //1.要看你的sql語句查回的數據是一維的,還是二維的,或者單個數據。 //對應的函數是getROW,getAll,getOne。 //2.增刪改統一用exec。 //3.數據庫的連接配置在構造構造函數中修改。 ?>
注意事項:
1.文件DB.class.php建好后。
2.在你需要操作數據庫接的文件中include這個文件,上面有示例。
3.使用之前必須把數據庫名改成你的數據庫名。這個是最重要的,也是最容易忘記的。
