循环为方法fetch_assoc()返回的数组PHP& mysqli的

时间:2015-06-16 11:05:30

标签: php mysql arrays

我请那些有点善意帮助我的人,我想循环从商店程序mysql返回的这个动态数组,因为它是动态的,永远不会知道索引我不知道如何do,我知道只有带有两个键的数组是将给出列表的标题和带有[NomeProdotto]等的数组..将列出项目。

这是要循环的数组:

    Array
(
    [0] => Array
        (
            [NomeMenu] => Pizze
            [IDMenu] => 1
        )

[1] => Array
    (
        [IDMenu] => 1
        [IDProdotto] => 2
        [NomeProdotto] => Eurobar
        [PrezzoProdotto] => 5.00
        [IngredientiProdotto] => Pomodoro, Mozzarella, Patate bollite, Prosciutto
    )

[2] => Array
    (
        [IDMenu] => 1
        [IDProdotto] => 4
        [NomeProdotto] => Parripusu
        [PrezzoProdotto] => 6.00
        [IngredientiProdotto] => Pomodoro, Mozzarella, Salsiccia, Funghi, Origano
    )

[3] => Array
    (
        [IDMenu] => 1
        [IDProdotto] => 5
        [NomeProdotto] => U Chianu a Muccusa
        [PrezzoProdotto] => 4.00
        [IngredientiProdotto] => Pomodoro, Mozzarella, Origano
    )

[4] => Array
    (
        [IDMenu] => 1
        [IDProdotto] => 6
        [NomeProdotto] => Vaddruni
        [PrezzoProdotto] => 5.00
        [IngredientiProdotto] => Pomodoro, Mozzarella, Piselli, Uovo, Prosciutto cotto, Funghi, Origano
    )

[5] => Array
    (
        [NomeMenu] => Supplementi
        [IDMenu] => 3
    )

[6] => Array
    (
        [IDMenu] => 3
        [IDProdotto] => 8
        [NomeProdotto] => Prosciutto
        [PrezzoProdotto] => 1.00
        [IngredientiProdotto] => 
    )

)

我这样解决了

    $i = 0;
    $menus = array();
    if ($mysqli->multi_query("CALL getMenuLocale(" . $_REQUEST['locale'] .   ")")) {
        while ($mysqli->more_results()) {
            $mysqli->next_result();
            if ($result = $mysqli->store_result()) {
                while ($row = $result->fetch_all(MYSQL_ASSOC)) {

                    $menus[$i] = $row;

                }
                $result->free();
            }

            $i++;
        }
    }

但是我在Godaddy发布后立即收到错误:

致命错误:在第758行调用未定义的方法mysqli_result :: fetch_all()

我读到解决方案可能是使用fetch_assoc()而不是fetch_all(),它返回上面提到的数组,我如何循环浏览php

1 个答案:

答案 0 :(得分:0)

首先,不要使用fetch_all。顾名思义,它返回完整的数据集。所以使用fetch_assoc,这将以数组的形式返回结果的一行。 像这样:

while ($row = $result->fetch_assoc()) {
    //
}

这使得$ row成为具有不规则数量元素的数组。您也可以遍历此数组。所以代码看起来像:

while ($row = $result->fetch_assoc()) {
    foreach ($row as $key => $value) {
        //$key is 'IDMenu' for example
        //$value is '1' for example

        //you can then use these variables
    }
}

这样,如果数组中有5个元素中的2个,那么你仍然可以使用你拥有的值。

我也看到你试图将$ row数组添加到另一个$ menus数组中?这样做的目的是什么?因为您实际上是以这种方式重新创建查询结果...

除了所有事情之外,如果您在使用数组时遇到困难,也许最好先查看一些tutorials;)