Попытка распечатать значения ассоциативного массива - ошибка: преобразование массива в строку

1

Я пытаюсь повторить значения ассоциативного массива, который содержит все строки в таблице, используя foreach в таблице.

Вот код:

<?php 
    $result = doSql("SELECT * FROM carts WHERE userID =".$userID);
     if($result && mysqli_num_rows($result)>0) {
        $cartRows = mysqli_fetch_all($result); 

             foreach($cartRows as $key => $value) {

                echo "<tr>
                    <td scope='col'>" .$value['cartID']. "</td>
                    <td scope='col'>" .$value["productToCartQty"]. "</td>
                    <td scope='col' colspan='2'>".$value['invoiced']."</td>
                    <td scope='col' colspan='2'>" .$value['customization']."</td>
                   </tr>";
                }
            } 
 ?>

Ошибка: преобразование массива в строку

Я не понимаю, почему я получаю эту ошибку, поскольку я только повторяю значение внутри массива $value т.е. echo $ value ['cartID']?

Вот скриншот об ошибке: https://gyazo.com/cdc8dde8c2e09e91b5209c2b50bcb72c

Есть идеи?

  • 0
    Сделайте print_r($cartRows) перед foreach и посмотрите, действительно ли это массив
  • 0
    Вы можете использовать mysqli_fetch_array ($ result)
Теги:
arrays
foreach

1 ответ

1
Лучший ответ

Вам нужно изменить:

$cartRows = mysqli_fetch_all($result);

чтобы:

$cartRows = mysqli_fetch_all($result,MYSQLI_ASSOC);
  • 0
    О, мой бог! Это сработало. Причина, по которой я пропустил второй параметр, заключается в том, что он был необязательным (я исследовал). Можете ли вы объяснить, почему я получаю ошибку: преобразование строки в массив, если у меня нет этого параметра?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню