【问题标题】:How to retrieve data from multiple host database table in php and mysql如何从 php 和 mysql 中的多个主机数据库表中检索数据
【发布时间】:2014-10-28 19:37:12
【问题描述】:

我们有两个数据库连接,如下所示,

$link1  = mysqli_connect($host1,$user1,$pass1,$db1);
$link2  = mysqli_connect($host2,$user2,$pass2,$db2);

这里,主机和数据库是远程的。

$query  = "SELECT db1_tbl1.name as name,db1_tbl1.email as email ,db2_tbl2.address
as address FROM db1.table1 as db1_tbl1 INNER JOIN db2.tble2 as db2_tbl2 ON 
db1_tbl1.std_id = db2_tbl2.std_id WHERE program_id = '$program_id' LIMIT 1,10";

mysqli_query($link1,$query);

如果我在 mysqli_query 中使用 $link1,则会显示错误

SELECT command denied to user 'user_name'@'remote_host_ip' for table 'table_name'
For First Link($link1)

如果我使用 $link2,

SELECT command denied to user 'user_name'@'remote_host_ip' for table 'table_name'
For Second Link($link2)

通常情况下,分别连接两个远程数据库并检索数据就可以了(效果很好)

但问题是何时我想检索数据以加入两个远程主机数据库。

实际上,我如何从查询中获取两个连接同时工作的数据。

如何在mysqli_query中设置两个数据库连接链接

请帮忙?

【问题讨论】:

标签: php mysql mysqli


【解决方案1】:

您可以在 MySQL 中使用 FEDERATED 存储引擎。

首先,您必须启用 FEDERATED 存储引擎。

你必须去 MySQL 中的 my.ini 文件并打开它。

将其注释为 #skip-federated 而不是 skip-federated

“联合”一词复制粘贴到 [mysqld] 之后,如下所示

[mysqld]
federated

在本地服务器中创建与远程服务器表相同的表并在最后添加连接

CREATE TABLE federated_table (
....
.........(same as your remote server table)

)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table'; 

由于你的两个表是远程主机,你可以创建两个联合表

我希望你能完美地完成你的工作。

您可以访问它。 http://dev.mysql.com/doc/refman/5.1/en/federated-create-connection.html

【讨论】:

    【解决方案2】:

    可以使用 MySQL 中的 FEDERATED 存储引擎来执行此操作。

    FEDERATED 存储引擎可让您在其中一台服务器上设置不包含数据的表 - 它从另一台服务器提取数据。在您的 SQL 查询中,您将其视为普通表,因此您可以进行连接、从中选择、插入、删除等。

    但默认情况下未启用 FEDERATED 存储引擎。

    您需要能够使用 --federated 标志重新启动 Mysql 服务器二进制文件。

    基本上,您需要拥有 root shell 访问权限 (ssh) 才能执行此操作,这意味着如果您的数据库位于共享主机上,这可能不是真正的解决方案。

    其他选项有:

    1. 将数据从一个数据库复制到另一个数据库(例如临时表),然后进行连接。
    2. 将两个表中的所有数据选择到应用程序中,然后在应用程序中执行联接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多