通过PHP类使用两个数据库连接? (PHP / MySQL)

时间:2012-03-09 16:18:40

标签: php mysql class this

我创建了这两个文件:

class myDbClass {
        function dbConnect($db) {
            $dbhost = 'myhost';
            $dbuser = 'myuser';
            $dbpass = 'mypassword';
            $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');      
            mysql_select_db($db, $conn);

        $this->dbConnection = $conn; 
    }

function dbSelect($sql) {       

    // run the query
    if ($result = mysql_query($sql, $this->dbConnection)) { 
        echo 'got a result';
    } else {
        echo 'error';
    }


} // end of dbSelect function
} // end of class

    include "myclass.php";

    // create two new objects

$db1 = new mkaDB();
    $db2 = new mkaDB();

// First Database Connection
$dbname1 = 'myfirstdatabase';
$db1->dbConnect($dbname1);


// Second Database Connection
$dbname2 = 'myseconddatabase';
$db2->dbConnect($dbname2);

$sql1 = "select * from mytable";
$db1->dbSelect($sql1);

$sql2 = "select * from myothertable";
$db2->dbSelect($sql2);

我想要完成的是创建2个数据库连接,每个连接到不同的模式。然后,我希望能够通过$db1->dbSelect$db2->dbSelect调用每个架构。但是,当我运行它时,我从dbSelect函数收到“错误”消息。如果我阻止对$db2对象的所有调用,则$db1对象可以正常工作。

我以为我可以使用$this->dbConnection来解决问题,但这似乎不起作用。

3 个答案:

答案 0 :(得分:1)

你想要这样的东西:

    class sql
{

    private static function _dbConnect()
    {
        mysql_connect("localhost", "uname", "pwd");
        mysql_select_db("db");
    }
private static function _dbConnect2()
    {
        mysql_connect("localhost", "uname", "pwd");
        mysql_select_db("db");
    }


public static function something($user){
            self::_dbConnect
           // code in here and mysql
          OR
            self::_dbConnect2

}

那样的东西?

工作示例:

public static function getFriendNumber($username)
{
    self::_dbConnect();
    $query = mysql_query("SELECT friend_array FROM users WHERE `user_name` = '$username'")or die(mysql_error("Error selecting friend_array with id " . $username));
    while($row = mysql_fetch_array($query)){
        $friend_delimit = $row['friend_array']; 
    }
    if($friend_delimit != ''){
        $explosion = explode(",",$friend_delimit);
        $counted = count($explosion);
        return $counted;
    }
    else {
        $counted = '0';
        return $counted;
    }
}

答案 1 :(得分:0)

您的$ this-> dbConnection未在您的班级中定义。

class myDbClass {
  private $dbConnection
  ....
}

答案 2 :(得分:0)

您需要第4个“new_link”参数(php mysql_connect):

“如果使用相同的参数对mysql_connect()进行第二次调用,则不会建立新的链接,而是返回已打开的链接的链接标识符.new_link参数修改此行为并使mysql_connect成为可能()总是打开一个新的链接,即使之前使用相同的参数调用了mysql_connect()。“