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

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

这可能吗?

如何?

提前非常感谢你。

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

  1. 数据库名称:测试1
  2. 数据库名称:测试2

测试1

Client_table: {cl_id, 名称, 分支, 地址}

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

测试2

sites_table:{sit_id、名称、位置、a_id(FK 从 area_table)、状态}

area_table: {area_id, user, pass}

请注意,这 2 个 DB 不同

这是我的查询:选择site_id, site_name、user_id、用户名 从站点, user_table 其中a_id = user_id 和状态 = 1 或状态 = 2;

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

谢谢!

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

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

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

例如,假设"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)。获取所有"Client_table。从 $conn_client 获得所需的 Branch" 值,然后在 $conn_user 上使用 "WHERE user.area IN(...)" 进行 SELECT。

只需在查询中使用数据库名称,例如:

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