2011-08-03 69 views
1

我正在嘗試新出現的(php mysql連接)以避免冗餘。但是這裏的主要問題是,每當使用「mysql_real_esacpe_string」時,它需要mysql_connect在頂部,這可能會導致無法在函數中出現它們?什麼是寫入php mysql打開和關閉連接的最佳方式

例子:

function runquery($query){ 

     connect(); //Connecting database 

     issue_query($query); //Calling mysql_query function 

     disconnect($link); //Calling mysql_close function 
    } 

回答

3

你不應該打開和關閉的每個查詢的連接。除非在完成與數據庫的交談後進行長時間處理,否則根本不需要關閉連接;它會在執行結束並釋放資源時關閉。在發出查詢之前,每次重新連接都會在建立TCP連接和執行握手和身份驗證時涉及大量開銷。

+0

你不想關閉您的連接,因爲當你的PHP腳本結束它會自動關閉。除非您希望腳本花費很長時間,否則不要打擾關閉數據庫連接。 –

+0

@Pelle你爲什麼重複我說的話? –

+0

喔!在閱讀你的答案時,我必須跳過一行。 AARGH!積分發給你。 –

1

你也可以讓你的類處理mysql連接到singleton

class mysqlController { 
private $connection; 
private $db; 
private static $instance; 

private function __construct() { 

} 
public static function getInstance() { 
    if(!self::$instance) { // First time this method is called 
     self::$instance = new mysqlController(); 
    } 

    return self::$instance; 
    } 
public function openConnection($db_host, $db_user, $db_password, $db_name) 
{ 
    if(!$this->connection) 
    { 
     $this->connection = mysql_connect($db_host, $db_user, $db_password); 

     if(!$this->connection) 
     { 
      die('Database error: ' . mysql_error()); 
     } 
     else 
     { 
      $this->db = mysql_select_db($db_name, $this->connection); 
      if(!$this->db) 
      { 
       die("Database error: " . mysql_error()); 
      } 
     } 
    } 
} 
} 

使用MySQL連接得到instace用的getInstance() - 功能。

$connection = mysqlController::getInstance(); 
$connection->openConnection('host', 'user', 'pass', 'database'); 
$connection->query(.....); // For example 

當然,你也應該需要在這裏創建查詢等功能

相關問題