2015-07-10 53 views
0

我是veeery在PHP新,我試圖做這個簡單的任務:從MySql數據庫中獲取數據。每次我需要的東西時創建新的mysql連接對象

我做了一個單例類數據庫comunicate:

class Database { 
    private static $db = null; 
    private $servername; 
    private $username; 
    private $password; 
    private $connection; 

    private function Database(){ 
     $this->servername = "localhost"; 
     $this->username = "user"; 
     $this->password = "123456"; 
    } 

    public static function get_database(){ 
     if(!static::$db){ 
      static::$db = new Database(); 
     } 
     return static::$db; 
    } 

    function start_connection(){ 
     $this->connection = new mysqli($this->servername, 
             $this->username, 
             $this->password); 
    } 

    function execute_query($query){ 
     $this->start_connection(); 

     [...] 

     $this->disconnect(); 
    } 

    function disconnect(){ 
     $this->connection->close(); 
    } 

    [...] 
} 

該代碼可以正常使用,但有一件事困擾着我。我想知道是否真的需要創建一個新的連接對象,new mysqli(),每次我撥打start_connection()。有什麼像reconnect

+4

這完全取決於你。大多數人只是在構造函數中連接到數據庫一次,然後重新使用該連接的一切。但一般來說,如果您需要使用不同憑據訪問數據庫,那麼您只需要多次連接到數據庫。 –

+0

你有沒有聽說過「單身」模式?也許你可以在你的數據庫類中使用類似的東西。 – Mindastic

+0

爲什麼不將mysqli對象存儲在靜態$ db變量中並在get_database()函數中初始化一次?這樣你總是可以使用這個單一的連接。 – FLXN

回答

0

您可以將數據庫類中存儲的mysqli實例,並在「專用功能數據庫」功能,聲明它(可能通過調用這個 - $> start_connection(),如果你願意的話)

如果你願意,你可以提供一個關閉連接的靜態函數。

相關問題