Я получаю эту ошибку Доступ запрещен для пользователя '@' localhost '(используя пароль: НЕТ), когда я открываю второе соединение mysqli в том же скрипте.
У меня есть класс, который имеет 2 свойства (подклассы). Эти оба свойства простираются от класса DataBase (который создает новое соединение mysqli). В тот момент, когда эта подзадача получает экземпляр, я получил ошибку Access denied.
Есть ли способ установить два соединения mysqli, или моя логика ошибочна, и у класса shoulnd't есть 2 подкласса, как это?
Надеюсь, я смогу объяснить. заранее спасибо
Нет причин, по которым я могу придумать, чтобы открыть 2 подключения к одному серверу базы данных. Вы должны создать свое соединение и передать его в свои функции в качестве аргумента.
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
class Foo {
/** @var \mysqli */
protected $db;
public function __construct(mysqli $mysqli) {
$this->db = $mysqli;
}
public function bar() {
$res = $this->db->query('SELECT * FROM table');
$data = array();
while($row = $res->fetch_assoc()) $data[] = $row;
return $data;
}
}
$class = new Foo($mysqli);
Проверьте свой max_user_connections
my.cfg
файле my.cfg
.
Максимальное количество одновременных подключений, разрешенных для любой учетной записи пользователя MySQL. Значение 0 (по умолчанию) означает "без ограничений".
Эта переменная имеет глобальное значение, которое может быть установлено при запуске или времени запуска сервера. Он также имеет значение сеанса только для чтения, которое указывает эффективное ограничение одновременного подключения, которое применяется к учетной записи, связанной с текущим сеансом. Значение сеанса инициализируется следующим образом:
Если учетная запись пользователя имеет ненулевой
MAX_USER_CONNECTIONS
ресурса MAX_USER_CONNECTIONS, значение max_user_connections сеанса устанавливается равным этому пределу.В противном случае значение сеанса max_user_connections устанавливается в глобальное значение.