[我使用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行
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();
}
}
}
答案 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();
}
}
}