[英]Select multiple columns from a table and insert data into another table in a different database in PHP-MySQL
[英]PHP-Mysql table join from different host
abc @ localhost(server)中的数据库abc_db中有一个表employee,xyz @ localhost(server)中的数据库xyz_db中有另一个表部门。 如何使用php mysql连接加入表。 我编写了以下代码,但它不生成任何资源ID。
$conn = mysql_connect("localhost","abc","abcdb");
$conn1 = mysql_connect("localhost","xyz","xyzdb");
$db_select=mysql_select_db("abc_db",$conn);
$db_select1=mysql_select_db("xyz_db",$conn1);
$sql="SELECT * FROM employee e LEFT JOIN department d ON e.department_id=d.id ";
$res=mysql_query($sql);
您不能使用与数据库的不同连接来连接两个表,而不是来自PHP,也不能连接到MySQL服务器。 ( @RobertPitt有一个好处:你真的需要两个连接吗?可以在同一个主机上连接两个表,但是在一个连接中的不同数据库中连接 - 假设你的连接具有访问两者的必要权限)
如果您可以控制一个或另一个数据库,则可以尝试设置联合表; 确保性能良好(如果数据库机器没有快速,低延迟的连接(即通过电缆直接连接),请不要打扰),并且有一长串限制 。
可能的小恶魔:
它是不可能的,它可能在PHP上使用群集/多个节点与复制设置时。
显然你不了解一些关于mysql的技术问题,但是在此之前就给出了。
$master = mysql_connect("master_host","abc","abcdb");
$slave = mysql_connect("slave_host","xyz","xyzdb");
if(mysql_select_db("abc_db",$master) && mysql_select_db("xyz_db",$slave))
{
//Both Selected
$sql = mysql_query("SELECT * FROM employee",$master);
$rows = array();
while($row = mysql_fetch_assoc($sql))
{
//Query the other $slave DB here!
$slave_sql = mysql_query("SELECT * FROM department WHERE department_id = " . $row['id'],$slave);
while($sub_row = mysql_fetch_assoc($slave_sql))
{
$row = array_combine($sub_row,$row);
}
$rows[] = $row;
}
}
但这不是你想要做的事情。
只是尝试加入同一服务器上的两个数据库 ,因为代码中的主机都是locahost ,这是可能的
SELECT * FROM db1.employees db1_e,db2.records db2_r WHERE db1_e.employee_id = db2_r.record_eid
但是在没有使用复制的情况下,不会将服务器1切换到外部服务器,即使这样,复制也不会有太多帮助。
参考和链接:
http://nathan.rambeck.org/blog/2-joining-mysql-tables-across-multiple-databases
如果使用的用户具有对所有数据库和表的权限,则可以在不同的数据库和表之间进行选择(如果数据库主机不同,则无法进行此操作)。 这只是一个例子:
SELECT `table_a`.`column` AS `table_a_column`, `table_b`.`column` AS `table_b_column`
FROM `database_a`.`table` AS `table_a`
JOIN `database_b`.`table` AS `table_b` ON `table_b`.`smth` = `table_a`.`smth_else`
您无法使用PHP和SQL“即时”加入它们,您可以做的是从两个主机获取数据并使用PHP手动比较/加入它们。
我们可以说。 您无法在PHP中运行或连接两个不同数据库的两个表。
你可以在mysql提示符上运行查询,但不能在.php文件中运行,因为每次你需要在mysql_query()中调用数据库连接; 所以你不能同时运行两个数据库。
你有单一的选择只需要在数组中获取第一个数据库的表数据,然后运行数组循环,或者你可以在mysql中使用它的id和运行两个while循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.