我正在尝试新兴他们(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
}
您不应该为每个查询打开和关闭连接。除非在完成与数据库的通信后进行一些长时间的处理,否则根本不需要关闭连接;当执行结束并释放资源时,它将被关闭。在发出查询之前,每次重新连接都涉及到建立TCP连接、执行握手和身份验证的大量开销。
你也可以将处理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());
}
}
}
}
}
使用getInstance()函数获取实例
$connection = mysqlController::getInstance();
$connection->openConnection('host', 'user', 'pass', 'database');
$connection->query(.....); // For example
当然你也需要在这里创建查询函数等