通过类的mysqli多重连接错误

时间:2014-09-11 14:46:16

标签: php mysqli

我有以下问题,花了我最后几个小时......

我有一个mysqli连接类:

class database extends SplObjectStorage{

  private $db_link;


  public function __construct($MySQLi_DB){
     if(!file_exists($_SERVER["HOME"].'/'.(substr($_SERVER['PHP_SELF'], 1, strpos(substr($_SERVER['PHP_SELF'], 1),'/'))).'/includes/mysqli.inc.php')){
        echo "MySQLi Include Datei nicht vorhanden";
     }else{
        if (!$this->create_connection($MySQLi_DB) == true){
            echo "Error creating Database. Parameter '".$MySQLi_DB."' unknown<br><br>";
        }           
     }
  }

  public function query($query){
     Return $this->db_link->query($query);
  }


  public function close(){
     mysqli_close($this->db_link);
  } 


 private function create_connection($MySQLi_DB){

    include_once($_SERVER["HOME"].'/'.(substr($_SERVER['PHP_SELF'], 1, strpos(substr($_SERVER['PHP_SELF'], 1),'/'))).'/includes/mysqli.inc.php');
    $this->db_link = new mysqli($MySQLi_Host, $MySQLi_User, $MySQLi_Passw, $MySQLi_Praefix.$MySQLi_DB);
    $this->attach($this->db_link);  

    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQLi: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
        return false;
    }else{
        return true;
    }

    echo $mysqli->host_info . "\n";     
}

构造函数通过查找包含所有连接数据(如user,pwd等)的包含文件来初始化类。

虽然它接收一个类似于databasename的参数($ MySQLi_DB)。

当我用这个命令调用这个类时:

$SSO_DB = new database('SSO');

这个课程很好。 更改参数执行另一个数据库名称是没有问题的。 例如:$Social_DB = new database('social');

在我在同一页面上调用我班级的两个实例之前,这甚至没有问题!

e.g:

$SSO_DB         = new database('SSO');
$Social_DB  = new database('social');

返回此错误: 警告:mysqli :: mysqli():( HY000 / 1044):用户访问被拒绝&#39;&#39; localhost&#39;到数据库&#39; social&#39;在第41行的/volume1/web/portal/classes/database.class.php

第41行是:

$this->db_link = new mysqli($MySQLi_Host, $MySQLi_User, $MySQLi_Passw, $MySQLi_Praefix.$MySQLi_DB);

当我删除其中一个classcalls时没有错误。 无论我删除哪个电话......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

将include_once()更改为include()解决了问题! php似乎存储了在一个页面上调用类的频率,并且第二次没有包含该文件。