Ошибка при запуске моего кода на удаленном сервере: пользователь root превысил значение max_user_connections

[Я использую hostinger в качестве хоста] У меня есть веб-страница, где я показываю результаты запроса, он работает локально, но когда я загружаю его в Интернет, я получаю сообщение об ошибке:

Обнаружение ошибки en la linea: 6 Ошибка: SQLSTATE[42000] [1226] Пользователь 'u749120824_root' превысил ресурс 'max_user_connections' (текущее значение: 3) Неустранимая ошибка: вызов функции-члена prepare() для не- объект в /home/u749120824/public_html/pags/ver_usuarios.php в строке 18

Вот несколько скриншотов Localhosted Localhost

Интернет Хостинг Интернет Хост Мой код:

class ComprobarUsuario extends Conexion{
        public function ComprobarUsuario(){
            parent::__construct();
        }
        public function Comprobar($nombre){
            $sqlCU="SELECT * FROM admins WHERE NOMBRE=:nombre_usuario";
            $resultCU=$this->con->prepare($sqlCU);
            $resultCU->execute(array(":nombre_usuario"=>$nombre));
            $NresultadosCU=$resultCU->fetch(PDO::FETCH_ASSOC);
            if($NresultadosCU!=0){
                return "admin";
            }
        }
    }

Класс подключения:

class Conexion{
        protected $con;
        public function Conexion(){
            try{
                $this->con=new PDO("mysql:host=localhost;dbname=marisol","root","");
                $this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                $this->con->exec("SET CHARACTER SET utf8");
                return $this->con;
            }
            catch(PDOException $e){
                echo "Ha habido un error en la linea: " . $e->getLine() . " Error: " . $e->getMessage();
            }
        }
    }

1 ответ

Решение

Проблема в том, что ваш код создает новое соединение для каждого нового экземпляра ComprobarUsuario. Если вы используете аналогичный подход для других запросов, ваше приложение очень быстро превысит ограничение. Решение состоит в том, чтобы создать одно общее соединение для всех подклассов.

class Conexion{
        protected static $con;
        public function Conexion(){
            try{
                if (!self::$con) {
                    self::$con=new PDO("mysql:host=localhost;dbname=marisol","root","");
                    self::$con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                    self::$con->exec("SET CHARACTER SET utf8");
                    return self::$con;
                }
            } catch(PDOException $e){
                echo "Ha habido un error en la linea: " . $e->getLine() . " Error: " . $e->getMessage();
            }
        }
    }
Другие вопросы по тегам