【php】利用php的建構函式與解構函式編寫Mysql資料庫查詢類,建構函式mysql

來源:互聯網
上載者:User

【php】利用php的建構函式與解構函式編寫Mysql資料庫查詢類,建構函式mysql

上次在《【php】利用原生態的JavaScript Ajax為php進行MVC分層設計,相容IE6》(點擊開啟連結)一文中,對於php查詢Mysql資料庫的model.php寫法還不夠完善,在每一個方法中還需要自己聲明mysql的$con對象,同時自己關閉mysql的$con對象。這樣,如果查詢方法一多,再無緣無故地增加了許多聲明$con對象與關閉$con對象的代碼。其實完全可以利用php的建構函式與解構函式給資料庫類各個查詢方法的注入$con對象,同時自動在每次查詢之後自動回收$con對象。

直接舉一個例子說明這個問題,首先我們的任務很簡單,就是把mysql中test資料庫的testtable表,按date時間類降序排序的結果查詢到網頁上。

如:


首先,我們編寫一個model.php如下,

先聲明一個私人的類成員$con作為這個類的全域變數。

可以把建立資料庫連接的代碼放在testtable這個資料庫查詢類的建構函式__construct()裡面,把關閉資料庫連接的代碼放在解構函式__destruct()裡面,其中__construct()與__destruct()是php中的函數名保留關鍵字,也就是一旦聲明這兩個函數,就被認為是建構函式與解構函式。

值得注意的是,為聲明的私人類成員$con賦值,必須用$this->con的形式。不可以直接$con=xx,如果是$con=xx,php認為這個變數的作用範圍僅在當前函數內,不能作用於整個類。

建構函式,要求一個變數$databaseName,此乃調用者需要查詢的資料庫名。

<?phpclass testtable{  private $con; function __construct($databaseName){$this->con=mysql_connect("localhost","root","root");  if(!$this->con){  die("串連失敗!");  } mysql_select_db($databaseName,$this->con);  mysql_query("set names utf8;");  }public function getAll(){          $result=mysql_query("select * from testtable order by date desc;");  $testtableList=array();  for($i=0;$row=mysql_fetch_array($result);$i++){$testtableList[$i]['id']=$row['id'];$testtableList[$i]['username']=$row['username'];  $testtableList[$i]['number']=$row['number'];  $testtableList[$i]['date']=$row['date'];  }  return $testtableList;  }function __destruct(){mysql_close($this->con);  }}?>  

搞完之後,getAll()這個資料庫查詢類的查詢方法,無須聲明資料庫連接與關閉資料庫連接,直接就可以進行查詢,查詢完有解構函式進行回收。

在controller.php中先引入這個testtable查詢類,再進行getAll()方法的調用,則得到如的效果:

<?phpheader("Content-type: text/html; charset=utf-8");   include_once("model.php");      $testtable=new testtable("test");      $testtableList=$testtable->getAll();echo "<table>";for($i=0;$i<count($testtableList);$i++){          echo "<tr><td>".$testtableList[$i]['id']."</td><td>".$testtableList[$i]['username']."</td><td>".$testtableList[$i]['number']."</td><td>".$testtableList[$i]['date']."</td></tr>";      } echo "</table>";?>

相關文章

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.