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

黄舟
發布: 2023-03-12 10:44:01
原創
1248 人瀏覽過

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

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()方法的調用,則得到如上圖的效果:

    getAll();  
        echo "";  
        for($i=0;$i  
                ";    
        }   
        echo "
    ".$testtableList[$i]['id']." ".$testtableList[$i]['username']." ".$testtableList[$i]['number']." ".$testtableList[$i]['date']."
    "; ?>
    登入後複製

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!