PHP не показывает все строки из таблицы


У меня есть таблица с именем cart, и я хочу вернуть все строки из нее через PHP.

Поэтому я закодировал это:

$get_add = "SELECT * FROM cart WHERE ip_add = '1'";
$run_add = mysqli_query($con,$get_add);

$cart_items = [];
while($row_results = mysqli_fetch_array($run_add))
{
    $item = array(
        'table_id' => $row_results['table_id'],
        'pro_id' => $row_results['product_id'],
        'pro_title' => $row_results['product_title'],
        'pro_price' => number_format($row_results['product_price'], '0', '', ','),
        'pro_supplier'  => $row_results['product_supplier'],
        'pro_img' => $row_results['product_image'],
    );
    $cart_items[] = $item;

    foreach($cart_items as $cart){
        echo $cart['pro_title']
    }
 }

Так что это работает нормально, но единственная проблема заключается в том, что он показывает только один результат. Однако есть несколько строк, которые имеют одинаковое ip_add значение 1.

Поэтому я прошу Вас сообщить мне, в чем моя ошибка и как правильно показывать все строки таблицы?

Заранее спасибо!

2   2  

2 ответа:

Переместите свой внутренний foreach цикл за пределы while следующим образом:

while($row_results = mysqli_fetch_array($run_add))
{
    $item = array(
        'table_id' => $row_results['table_id'],
        'pro_id' => $row_results['product_id'],
        'pro_title' => $row_results['product_title'],
        'pro_price' => number_format($row_results['product_price'], '0', '', ','),
        'pro_supplier'  => $row_results['product_supplier'],
        'pro_img' => $row_results['product_image'],
    );
    $cart_items[] = $item;
}

foreach($cart_items as $cart){
    echo $cart['pro_title'];
}

В принципе, то, что вы делаете, всегда возвращает последний элемент массива $cart_itmes, потому что он находится внутри цикла while. Поэтому измените его так, как я сделал в приведенном выше фрагменте.

Удалите foreach петлю из $cart_items и добавьте ее после while петли. Поскольку вы добавляете значения в $cart_items , то вы зацикливаете это $cart_items, поэтому в первый раз вы получите одно значение, затем два значения, а затем три значения и так далее... Еще одна вещь добавьте ; в конце строки echo $cart['pro_title'].

while ($row_results = mysqli_fetch_array($run_add)) {
    $item = array(
        'table_id' => $row_results['table_id'],
        'pro_id' => $row_results['product_id'],
        'pro_title' => $row_results['product_title'],
        'pro_price' => number_format($row_results['product_price'], '0', '', ','),
        'pro_supplier' => $row_results['product_supplier'],
        'pro_img' => $row_results['product_image'],
    );
    $cart_items[] = $item;
}

foreach ($cart_items as $cart) {
    echo $cart['pro_title'];
}

Добавление foreach в конце приведет к получению всех записей в $cart_items.