如何在php中的一个页面中使用2个数据库连接

时间:2015-01-08 13:57:01

标签: php html mysql

如何在php中的一个页面中使用2个数据库连接 这是我的代码:

$conn = mysql_connect("","","");
mysql_select_db("",$conn);

$db = mysql_connect("","","");
mysql_select_db("",$db);

$sql = mysql_query("SELECT * FROM Client_table WHERE Client_Id ='" . $_POST["clients"] . "'");
$id = mysql_fetch_array($sql);

$result = mysql_query("SELECT Client_table.Name, Client_table.Client_Id FROM Client_table, user WHERE user.username = '" . $_SESSION['username'] . "' AND Client_table.Branch = user.area Order by Name ASC");

我的当务之急是$ result必须从两个不同的数据库中获取数据。!!

我的意思是:

  1. (Client_table属于$ conn数据库)和

  2. (用户表属于$ db数据库)

  3. 两者都在一次查询中获取。

    这可能吗?

    如何?

    非常感谢你。

    嗨,大家好。 这是我的2个数据库

    1. 数据库名称:Test1
    2. 数据库名称:Test2
    3. 测试1

      Client_table:{cl_id,name,branch,address}

      user_table:{user_id,username,password}

      的Test2

      sites_table:{sit_id,name,location,a_id(来自area_table的FK),状态}

      area_table:{area_id,user,pass}

      请注意这两个DB不同

      这是我的查询:SELECT site_id,                        site_name,user_id,username                 FROM sites,user_table                 WHERE a_id = user_id                         AND status = 1 OR status = 2;

      我需要任何人的帮助。我无法在1个简单查询中加入2个数据库!请帮助

      谢谢!

5 个答案:

答案 0 :(得分:1)

您可以在数据库中创建一个访问来自用户表所在数据库的数据的视图,其中包含Client_table。

答案 1 :(得分:1)

如果两个数据库都在同一台服务器上,那么这是可能的(虽然这样做并不是一个好习惯)。您必须在查询中将数据库名称添加到表名称中。

例如,假设“Client_table”位于“client_database”中,而“user”表位于“user_database”中,则您的FROM子句将为FROM client_database.Client_table as Client_table, user_database.user as user

您也可以在2个查询中执行此操作,具有2个连接(例如$ conn_client和$ conn_user)。从$ conn_client获取所需的所有“Client_table.Branch”值,然后使用“WHERE user.area IN(...)”在$ conn_user上创建SELECT。

答案 2 :(得分:1)

将true添加到第二个mysql_connect方法

$db1 = mysql_connect("host", "user", "pw"); 
$db2 = mysql_connect("host", "user", "pw", true); 

mysql_select_db('database1', $db1);
mysql_select_db('database2', $db2);

如果通过确保不重复使用连接,提供给mysql_connect的参数相同,则需要这样做。

然后,您需要通过将其作为参数添加到方法中来指定您在查询时使用的连接:

mysql_query("SELECT Client_table.Name, Client_table.Client_Id FROM Client_table, user WHERE user.username = '" . $_SESSION['username'] . "' AND Client_table.Branch = user.area Order by Name ASC", $db2);

注意您不应该首先使用mysql_*,因为它已被弃用。

答案 3 :(得分:1)

只需在查询ex:

中使用数据库名称

select * from database1.Client_table where somthing=thing union all select * from database2.Client_table where somthing12=otherthing

答案 4 :(得分:1)

有两种方法:

<强>一:

使用mysql_close

mysql_select_db("", $conn);
$sql = mysql_query("SELECT * FROM Client_table WHERE Client_Id ='" . $_POST["clients"] . "'");
$id = mysql_fetch_array($sql);
$col1=$id['Col1'];
$col2= $id['Col2'];
$col3= $id['Col3'];
mysql_close($conn);

$db = mysql_connect("","","");
mysql_select_db("",$db);
$sql2 = mysql_query("OTHER QUERY FOR DATABASE2.TABLE2");
$id2 = mysql_fetch_array($sql);
$col2_1=$id['Col2_1'];
//and so on...

mysql_query("SELECT database1.dbo.table1.Col1_1, database2.dbo.table2.col2_1 where xx =xx");