连接多个MySQL数据库与1个共享用户

时间:2013-12-31 18:02:33

标签: php mysql

我正在尝试在一个网站上集成维基,论坛,聊天和用户数据库。要连接到数据库,我们使用:

<?php
$host="localhost.sitename.com";
$user="user_name";
$password="password";
$database="site_database";
$connection = mysql_connect($host,$user,$password)
or Die ("Could not connect to Server.");
$db=mysql_select_db($database,$connection)
or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("site_database"); 
?>

我还需要它连接到其他3个数据库,我想知道我是否需要用一个单独的$ database和mysql_select_db行列出每个数据库,或者用一个中间的所有数据库列出?

$database="site_database";
$database="chat_database";
$database="wiki_database";
$database="forum_database";

mysql_select_db ("site_database");
mysql_select_db ("chat_database");
mysql_select_db ("wiki_database");
mysql_select_db ("forum_database"); 

OR

$database="site_database","chat_database","wiki_database","forum_database";

mysql_select_db ("site_database","chat_database","wiki_database","forum_database");

???

3 个答案:

答案 0 :(得分:2)

每个连接只能选择一个数据库。如果您希望同时打开并选择4个数据库,即使您使用相同的登录凭据,也需要有4个打开的连接。否则,如果该连接上的最后一个MySQL查询选择了不同的数据库,则需要在每个MySQL查询之前选择适当的数据库。

答案 1 :(得分:0)

首先:你应该使用mysqli 第二:尝试这样:

$Con1 = new mysqli ("host","user","password","database");
$Con2 = new mysqli ("host","user","password","database");
$Con3 = new mysqli ("host","user","password","database");

然后:

$PreparedStatement1 = $Con1->prepare(); 
$PreparedStatement1->bindparam('',);
$PreparedStatement1->execute();
$PreparedStatemet1->close(); 
$PreparedStatement2 = $Con2->prepare();
$PreparedStatement2->bindparam('',);
$PreparedStatement2->execute();
$PreparedStatemet2->close();

答案 2 :(得分:0)

您可以做的是创建一个将您连接到数据库的功能

function connect($host, $username, $password, $database) {
     $db = mysql_connect($host, $username, $password);
     mysql_select_db($database, $db);
     return $db;
}

理论上这是你想要做的,但这里有一些提示:

  1. 避免使用mysql扩展(你应该使用mysqli或PDO)
  2. 尽量不要在具有连接的数据库之间进行切换以实现进一步的数据库兼容性(尽管MySQL支持数据库切换,并非每个DBMS的行为都相同)
  3. 此外,如果你必须执行几项操作,你可以这样做:

    mysql_select_db('first', $db);
    // Perform some queries
    mysql_select_db('second', $db);
    // Perform some other queries
    mysql_select_db('first', $db);
    
    // And then switch back to the first database