我已经编写了一个快速的PHP类来简化对MySQL数据库的访问。这个类工作正常,并且有一个query()方法,它打开连接,执行查询,然后关闭连接(我知道脚本完成后,连接应该由php本身关闭,但我不太喜欢依赖它)。
从性能的角度来看,我知道每次执行查询时总是打开与数据库的连接可能不是一个很好的实践(而且,当我尝试使用mysql_real_escape_string()过滤输入时,它不起作用,因为没有活动的数据库连接)。但我想更清楚地说明这一点。做错事了吗?为什么?我还想知道好的替代方法。
这是课程:
class DB {
private $conn;
private $dbhost;
private $dbname;
private $dbuser;
private $dbpass;
public function __construct ($dbhost, $dbname, $dbuser, $dbpass)
{
$this->dbhost = $dbhost;
$this->dbname = $dbname;
$this->dbuser = $dbuser;
$this->dbpass = $dbpass;
}
private function open ()
{
$this->conn = mysql_connect ($this->dbhost, $this->dbuser, $this->dbpass)
or die ("Error connecting to database");
mysql_select_db ($this->dbname) or die ("Error selecting database");
}
private function close ()
{
mysql_close($this->conn);
}
public function query ($query)
{
$this->open();
$result = mysql_query($query, $this->conn)
or die ("Error executing query ".$query." ".mysql_error());
$this->close();
return $result;
}
}