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

how to use 2 database connection in one page in php

如何在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. (用户table属于$db数据库)

并且两者都在一个查询中提取。

可以吗?

如何?

非常感谢您。

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

  1. 数据库名称:Test1
  2. 数据库名称:Test2

测试 1

Client_table: {cl_id, 姓名, 分行, 地址}

user_table: {user_id, 用户名, 密码}

测试2

sites_table:{sit_id, 姓名, 位置, a_id(FK 来自 area_table), 状态}

area_table:{是a_id,用户,通过}

请注意这2个DB不同

这是我的查询:SELECT site_id, site_name、user_id、用户名 来自网站,user_table 其中 a_id = user_id AND 状态 = 1 或状态 = 2;

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

谢谢!

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

所在的数据库中

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

例如,假设 "Client_table" 在 "client_database" 中,而 "user" table 在 "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

将 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_*,因为它已被弃用。

只需在查询中使用数据库名称 ex:

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

有两种方法:

一个:

和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");