3

几乎按照标题 - 我有一个脚本,目前,从最初在 MSSQL 中的 MySQL 中提取数据(另一个脚本从 MSSQL 数据库中提取信息并在 MySQL 中填充一个保存表)

这在某种程度上可以正常工作,但是我现在已经到了可以直接从 MSSQL 数据库和 MySQL 数据库中提取一些信息的阶段。

有没有办法让 PHP 查询 MySQL 和 MSSQL 并在单个数组中返回信息?

例如,如果我关于 10 家苹果商店销售的所有信息都保存在 MySQL 中,而我关于橙子的信息都保存在 MSSQL 中,我可以运行一个数组以显示上个月每家商店售出的苹果和橙子数量吗?

谢谢

4

4 回答 4

3

是的,但你不会免费得到任何东西。您需要自己编写代码。例如:

$all_data = array();

query mysql
while(fetching mysql rows) {
  $all_data[] = the mysql row;
}

query mssql
while(fetching mssql rows) {
  $all_data[] = the mssql row;
}

然后只需通过数组获取数据即可。有多种结构化数据的方法,因此您需要构建一个符合您需求的数组。

PHP 库中有一些用于处理数组的有用工具。我最喜欢的是array_maparray_filterusort。将此与匿名函数结合起来,您就有了构建自己的过滤和排序的坚实基础。

于 2012-06-06T08:05:58.207 回答
2

没有什么能阻止您启动两个连接,对每个连接运行查询,然后将结果融合在一起。

当然,您不能执行连接,因为两台服务器无法相互通信以提供最终结果;全取决于你 :)

此外,总查询执行时间将是两个查询加在一起的时间,除非您使用mysqli运行异步查询的闪亮新功能。

于 2012-06-06T08:05:04.953 回答
2

首先,建立与 mssql 和 mysql 的连接。获取 mssql 和 mysql 的结果。然后使用array_combine合并两个数组得到一个数组。

于 2012-06-06T08:08:07.240 回答
0

您可以考虑的一种解决方案是使用分布式查询。您可以设置从 SQL Server 到 MySQL的链接服务器OPENQUERY(),并使用或类似的方法一起查询两个服务器。通过这样做,您可以在一个查询中直接连接 MySQL 和 MSSQL 表(在 MSSQL 上执行),甚至可以UPDATE从 MSSQL 连接 MySQL 表。

但是,链接服务器可能难以配置,并且性能并不总是可预测的,因此您必须仔细测试它是否 a) 性能对您来说足够好并且 b) 与您自己的 PHP 代码相比,维护的工作量更少。

于 2012-06-06T08:13:44.117 回答