Я использовал это решение, чтобы получить суперглобальное соединение MySQL:
class blst_db {
private static $mysqli;
private function __construct(){} //no instantiation
static function cxn() {
if( !self::$mysqli ) {
self::$mysqli = new mysqli(...);
}
return self::$mysqli;
}
// использовать blst_db :: cxn () -> prepare (....
Iнашел его здесь и он работал нормально, но когда я пытаюсь получить два соединения одновременно, я получаю сообщение об ошибке. Например, у меня есть класс, который выполняет запрос, подобный этому:
$query_points = blst_db::cnx()->prepare('SELECT point_id FROM points WHERE id=?');
$query_points->bind_param('i', $this->id);
$query_points->bind_result($point_id);
$query_points->execute();
while ($query_points->fetch()) {
$point = new blst_point ($point_id);
$points[] = $point; }
Я создаю различные объекты внутри оператора while, и этот конструктор объектов каждый раз запускает другой запрос (еще один $ query = blst_db :: cnx-> prepare (...)), и это не тотработает, и я не могу найти проблему. Если я изменяю код и создаю массив внутри оператора while, а затем, после закрытия этого запроса, я создаю все объекты внутри foreach, у меня нет проблем, но мне это не нравитсярешение.
Спасибо!