2011-08-03 72 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 

当然,你也应该需要在这里创建查询等功能

相关问题