SQL结果作为PHP数组

SQL结果作为PHP数组,php,sql,arrays,Php,Sql,Arrays,如何获得将在一个数组中包含多行的SQL结果: 示例SQL表: ID Cat LineID Qty DealID Cost 1 Phone 1 2 8941 25.00 2 Phone 2 43 8941 85.00 3 Net 1 2 8941 1.00 4

如何获得将在一个数组中包含多行的SQL结果:

示例SQL表:

ID      Cat        LineID      Qty    DealID    Cost
1       Phone      1           2      8941      25.00
2       Phone      2           43     8941      85.00
3       Net        1           2      8941       1.00
4       App        1           1      8941      87.00
5       Phone      1           20     8942      98.00
希望能够返回如下结果:

$product[Phone][LineID][Qty]
$product[Phone][1][Qty] -- this would return 2
顺便说一句:在Cat中,LineID永远不会被复制,但它可能并不总是相同的LineID-例如,在DealID 8941下,可能会有Cat>Phones 1,2,3,4的LineID,但在不同的DealID下,可能只有Cat>Phones 4,5

不确定我是否找到了完全错误的树,基本上我需要循环处理DealID下的所有结果,然后交叉引用LineID,从另一个包含名称、图像等的表中获取关于该LineID的所有信息……然后将其放入html表中,如下所示:

Product Name     Qty     Cost     Line Total
Phone 1           1      85.00    85.00
我希望我已经说清楚了,如果不是的话,不要太苛刻

谢谢,
B.

您需要使用php函数mysql\u fetch\u array()

看看
mysql\u fetch\u assoc

这将检查您的数组并创建一个您描述的结构数组。请注意,我假设您希望您提到的两个索引下的所有剩余字段可用,而不仅仅是
Qty
。另一种更快但内存更大的解决方案是:

    $array[$row['Cat']][$row['LineID']] = $row;
这会将所有值放在那里,包括刚刚使用的
Cat
LineID
值。

这是答案:

$sql="SELECT * FROM Blar";
$result = mysql_query($sql);
$combinedResults = array();
while ($row = mysql_fetch_array($result)) {
    $combinedResults[$row['cat']][] = array( 
    'LineID' => $row['lineID'],
    'Qty' => $row['qty'],
    'SetCost' => $row['Setcost'],
    'MonCost' => $row['Moncost'],
    'Postcode' => $row['postcode']
    );
};
//print_r($combinedResults);
print_r($combinedResults['Apps'][0]['Qty']);

感谢您的帮助@Dereleases

@Derelease-感谢您的回复-您能给出一个如何重新获得价值的示例吗-比如LineID 1的成本-我尝试了打印等,但效果不佳!!!!TaI刚刚意识到,根据您的表,用作键的某些值组合是非唯一的,它不会包含所有值,而是每个唯一组合的最后一个值。例如,在您提供的表中,ID 5将覆盖ID 1。由于不太了解您的数据,我无法真正提出解决方案,除了可能
$array[$row['Cat']][$row['LineID']][$row['ID']]=array之外(
@Dereleases-再次感谢-是否有完全不同的,但更好的方法来做到这一点-只能认为购物车式的解决方案会起作用-有什么想法吗?你的目标是什么?你想做什么?@Dereleases-所以整个项目是一个报价工具。报价部分是通过将所有细节添加到数据库中来完成的。这是重新加载的部分保存报价后,用户可以调用任何报价(即www.url.php?QuoteID=xxx)。数据库中有许多表。Orderlines表-这是保存报价的所有行的地方(如上所述)。该表的LineID需要与另一个表交叉引用,这取决于Cat是什么,因此如果Cat是Phones,那么table Phones就是保存该LineID(名称、图像等)所有细节的表。需要一个循环。如果您接受@Dereleases(并向上投票),则会更好若它对你们有帮助,那个就回答吧。这就是接受答案的意义所在。
$sql="SELECT * FROM Blar";
$result = mysql_query($sql);
$combinedResults = array();
while ($row = mysql_fetch_array($result)) {
    $combinedResults[$row['cat']][] = array( 
    'LineID' => $row['lineID'],
    'Qty' => $row['qty'],
    'SetCost' => $row['Setcost'],
    'MonCost' => $row['Moncost'],
    'Postcode' => $row['postcode']
    );
};
//print_r($combinedResults);
print_r($combinedResults['Apps'][0]['Qty']);