在远程服务器中运行我的代码时出错:用户root已超过' max_user_connections'

时间:2016-08-27 19:58:57

标签: php pdo host

[我使用hostinger作为主持人] 我有一个网页,我显示查询的结果,它在本地工作,但当我上传到网络时,我收到一条错误消息:

  

Ha habido un error 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

在线托管 Online Host 我的代码:

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 个答案:

答案 0 :(得分:4)

问题是您的代码为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();
            }
        }
    }