【发布时间】:2015-08-24 18:22:35
【问题描述】:
我需要将来自两个数据库的一对 MySQL 查询合并到一个单独的多维关联数组中。下面是我正在处理的数据示例。
问题似乎与生成的 $data0 数组值缺少唯一键(理想情况下是相应的“sku”值)有关,以用作合并数据的索引。
期望的输出是:
Array (
[0] => Array (
[SKU] => 101
[Description] => Test Item 1
[On Hand 1] => 3
[On Hand 2] => 7
)
[1] => Array (
[SKU] => 102
[Description] => Test Item 2
[On Hand 1] => 11
[On Hand 2] => 15
)
)
可能有更好的方法来处理 MySQL 查询和所需的数组。如果是这样,请告诉我。请提供任何反馈,因为我是一名排名初学者,并将尽我所能获得的帮助。谢谢!
<?
$query1 = "SELECT sku, description, on_hand as 'On Hand 1' FROM database1"
$queryresult1 = mysql_query($query1, $connection1);
$data1 = array();
while ($resultrow1 = mysql_fetch_assoc($queryresult1)) {
array_push($data1, $resultrow1);
}
$query2 = "SELECT sku, on_hand as 'On Hand 2' FROM database2"
$queryresult2 = mysql_query($query2, $connection2);
$data2 = array();
while ($resultrow2 = mysql_fetch_assoc($queryresult2)) {
array_push($data2, $resultrow2);
}
$data0 = array_merge($data1, $data2);
//example code for troubleshooting
$data1 = array('101' => array('SKU' => '101', 'Description' => 'Test Item 1', 'On Hand 1' => 3), '102' => array('SKU' => '102', 'Description' => 'Test Item 2', 'On Hand 1' => 11));
print_r($data1);
echo "<br /><br />";
$data2 = array('101' => array('SKU' => '101', 'On Hand 2' => 7), '102' => array('SKU' => '102', 'On Hand 2' => 15));
print_r($data2);
echo "<br /><br />";
$data0 = array_merge($data1, $data2);
print_r($data0);
?>
【问题讨论】:
-
不同的数据库或不同的表?
-
这看起来很像两个表而不是数据库
-
您只需要执行两个单独的查询,将两个结果保存到一个数组中,然后将这些数组推送到另一个数组中。我认为您已经有了正确的想法,我真的想不出更好的方法来做到这一点。您无法合并查询,因为它们是单独的数据库。您似乎已经在使用的方法不起作用吗?
-
@ShaneLessard 方法根据需要提取数据库数据。问题似乎是将数据合并到数组中。在处理多维数组时,array_merge() 函数似乎将第二个数组中的数据附加到第一个数组中的数据上。谢谢!
-
如果可以的话,你应该stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解 prepared statements,并考虑使用 PDO,it's really not hard。
标签: php mysql arrays multidimensional-array