php db класс с mysqli, которые поддерживают несколько соединений - PullRequest
2 голосов
/ 03 августа 2011

Дело в том, что мне нужно написать класс БД с mysqli, и он должен поддерживать несколько соединений с разными базами данных. Я знаю, что множественные соединения плохие, но у меня нет другого выбора.

Если есть хороший пример класса, который поддерживает несколько соединений?

Знаете ли вы какие-либо советы, которые я должен принять во внимание, когда начну писать урок? Какова лучшая практика в моем случае?

Заранее спасибо,

1 Ответ

2 голосов
/ 03 августа 2011

Первое, что приходит на ум, - это контейнерный класс, в котором хранится объект 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.

...