2011-07-06 37 views
1

我现在有以下数组,PHP/Mysql使用现有数组中的值创建一个新数组,帮助?

 
Array (1) 
0 => Array (5) 
    productid => 1 
    qty => 1 
    materialid => 12 

和我有以下两个查询其是

select name as productname, price from products where productid=1 

select name from materials where materialid=12 

我需要这些查询链接,使得阵列输出是这样或类似的:

 
Array (1) 
0 => Array (5) 
    productid => 1 
    qty => 1 
    materialid => 12 
    productname => Toothbrush 
    price => £3.00 

这基本上是将内容输出到购物篮页面。请注意,查询无法连接,因为两个表上没有任何连接。

谢谢

+2

[PHP的array_merge(http://php.net/manual/en /function.array-merge.php)可以为你做这个 –

+0

输出数组不包含来自第二个查询的数据,只包含来自第一个查询的产品名称和价格。 – Kwebble

回答

0

你也可以同时查询两个表:

select p.name as productname, m.name as materialname, p.price 
    from products p, materials m 
    where p.productid=1 and materialid=12 
+0

大家好 我想感谢你们所有人的回应,所有的解决方案都有效。我决定采用David的解决方案。 谢谢 – Dino

1

运行第一个查询,获取数据作为键控数组。运行第二个查询,将数据也作为键控数组获取。然后使这两个阵列的联合:

$data1 = query_data($sql1); 
$data2 = query_data($sql2); 
$result = array($data1 + $data2); 

会给你一个结果,它是一个包含所有值的单个阵列从$data1$data2一个阵列。 $data2中的重复密钥不会覆盖$data1中的密钥。见Array Operators in the PHP Manual

一个类似的功能是array_merge()它确实创建了两个数组中的一个。

0

你从哪里得到数据来填充初始数组?它是否总是有单个值(如果是这样的话,你可以在单个查询中使用笛卡尔连接来避免2次访问数据库)。为什么数据库中没有描述数据表之间的关系?

将数组中的值拼接到查询中,无论是文字还是作为边界参数都很简单。这里有什么问题?

0

您可以单独运行查询:

$res1 = mysql_query(Qry1); 
$res2 = mysql_query(Qry2); 

$data1 = mysql_fetch_array($res1); 
$data2 = mysql_fetch_array($res2); 

$res = array_merge_recursive($data1, $data2); 
相关问题