如何合并两个MySQL结果?

时间:2009-08-26 20:17:20

标签: php mysql merge

我在具有相同表结构的2个不同服务器上执行2个查询。 如何在PHP中合并2个数组?

3 个答案:

答案 0 :(得分:4)

PDO::query()返回一个实现接口PDOStatementTraversable对象 SPLIteratorIterator将任何Traversable设置为Iterator 另一个SPL类AppendIterator可以“连接”迭代器,就像单个迭代器一样。

<?php
$result1 = $pdo1->query('SELECT * FROM foo');
$result2 = $pdo2->query('SELECT * FROM foo');

$it = new AppendIterator;
$it->append(new IteratorIterator($result1));
$it->append(new IteratorIterator($result2));

foreach($it as $row) {
  echo join(', ', $row), "\n";
}

答案 1 :(得分:1)

看看array_merge

array array_merge ( array $array1 [, array $... ] )

  

将一个或多个数组的元素合并在一起,以便显示值   一个附加到前一个的末尾。它返回   结果数组。

     

如果输入数组具有相同的字符串键,则后面的值   该密钥将覆盖前一个密钥。但是,如果是数组   包含数字键,后面的值不会覆盖原始值   值,但会附加。

     

带有数字键的输入数组中的值将重新编号   在结果数组中从零开始递增键。

答案 2 :(得分:0)

请记住,当您查询两个数据库服务器时,除非您为每个记录标识使用UUID,否则您将在记录的ID之间发生冲突(db auto_increment feature)。

因此,当你没有使用uuid生成记录的id时,当你将两个数组与结果合并时,你应该标记一个来自服务器,以避免以后发生冲突。