php db class with mysqli,支持多个连接

时间:2011-08-03 16:59:26

标签: php class connection mysqli

问题是我需要用mysqli编写一个db类,它应该支持到不同数据库的多个连接。 我知道多个连接都很糟糕,但我没有其他选择。

如果有任何支持多个连接的类的好例子?

在我开始写课程时,您是否知道我应该考虑的任何提示?在我的案例中,最佳做法是什么?

提前致谢,

1 个答案:

答案 0 :(得分:2)

首先想到的是一个容器类,它将MySQLi对象存储在其中。 像这样:

class MySQLiContainer extends SplObjectStorage{
  public function newConnection($host = null, $username = null, $passwd = null, $dbname = null, $port = null, $socket = null) {
    $mysqli = new mysqli($host, $username, $passwd, $dbname, $port, $socket);
    $this->attach($mysqli);
    return $mysqli;
  }
}

//usage

$mysqliContainer = new MySQLiContainer();

$c1 = $mysqliContainer->newConnection('localhost','root','root','localDatabase');
$c1->query('SELECT ....');

$c2 = $mysqliContainer->newConnection('mysql.remotehost.net','hackermom','bobbytables','schoolDatabase');

$name = 'Robert\'); DROP TABLE students;--';

$c2->multi_query("SELECT * FROM students WHERE name = '$name'");

如果不了解更多有关所需的功能,很难说这是否是一个好主意;)

有关SplObjectStorage class。

的更多信息