什么是编写php mysql打开和关闭连接的最佳方式

时间:2011-08-03 08:50:01

标签: php mysql

我正在尝试新兴它们(php mysql连接)以避免冗余。但是这里的主要问题是每当使用“mysql_real_esacpe_string”时,它需要顶部的mysql_connect,这可能导致无法在函数中出现它们?

示例:

    function runquery($query){

        connect(); //Connecting database

        issue_query($query); //Calling mysql_query function

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

2 个答案:

答案 0 :(得分:3)

您不应为每个查询打开和关闭连接。除非在完成与数据库的通信后进行一些长时间的处理,否则根本不需要关闭连接;当执行结束并释放资源时它将被关闭。每次重新连接都会在建立TCP连接和执行握手和身份验证之前产生大量开销,然后才能发出查询。

答案 1 :(得分:1)

您还可以创建处理与singleton的mysql连接的类。

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-connection获取带有getInstance() - 函数的实例。

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

当然你还需要在这里创建查询功能等。