SQL结果作为PHP数组

时间:2011-06-29 16:35:01

标签: 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       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
BTW:在Cat中,LineID永远不会重复,但它可能不会是相同的LineID - 例如,在DealID 8941下可能有Cat的LineID>电话1,2,3,4但在不同的DealID下可能只有Cat> Phones 4,5

不确定我是不是想要完全错误的树,基本上我需要在DealID下遍历所有结果然后交叉引用LineID以从另一个保存名称的表中获取有关该LineID的所有信息,图像等...然后按照以下行放入html表:

Product Name     Qty     Cost     Line Total
Phone 1           1      85.00    85.00

我希望我已经说清楚,如果不是太苛刻!!

谢谢, 乙

4 个答案:

答案 0 :(得分:3)

$array = array();
while ($row = mysql_fetch_assoc($query_result)) {
    $array[$row['Cat']][$row['LineID']] = array(
        'Qty' => $row['Qty'],
        'DealID' => $row['DealID'],
        'Cost' => $row['Cost']
    );
}

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

    $array[$row['Cat']][$row['LineID']] = $row;

这会将每个值都放在那里,包括刚才使用的CatLineID值。

答案 1 :(得分:1)

答案 2 :(得分:0)

你需要使用php函数mysql_fetch_array()

答案 3 :(得分:0)

这就是答案:

$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