首頁  >  文章  >  後端開發  >  利用php的建構子與析構函式編寫Mysql資料庫查詢類別的範例程式碼

利用php的建構子與析構函式編寫Mysql資料庫查詢類別的範例程式碼

黄舟
黄舟原創
2017-07-02 10:20:051379瀏覽

對於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,此乃呼叫者需要查詢的資料庫名稱。

<?php  
class 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][&#39;id&#39;]=$row[&#39;id&#39;];  
            $testtableList[$i][&#39;username&#39;]=$row[&#39;username&#39;];    
            $testtableList[$i][&#39;number&#39;]=$row[&#39;number&#39;];    
            $testtableList[$i][&#39;date&#39;]=$row[&#39;date&#39;];    
        }    
        return $testtableList;    
    }  
    function destruct(){  
        mysql_close($this->con);    
    }  
}  
?>





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

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

    <?php  
    header("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][&#39;id&#39;]."</td>  
                <td>".$testtableList[$i][&#39;username&#39;]."</td>  
                <td>".$testtableList[$i][&#39;number&#39;]."</td>  
                <td>".$testtableList[$i][&#39;date&#39;]."</td>  
            </tr>";    
        }   
        echo "</table>";    
    ?>

以上是利用php的建構子與析構函式編寫Mysql資料庫查詢類別的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn