@daashuun

Почему не работает без encode и тут же decode?

Доброго времени суток. При получении данных с БД столкнулась с такой проблемой (или особенностью?): php читает строку из массива. echo $product->{"имя столбца"} ничего не выдает, однако если дописать $product = json_encode($product); $product = json_decode($product); то все работает. И я никак не пойму почему так, и ничего вразумительного нагуглить не смогла
<?php

    require ('connect.php');

    $link = mysqli_connect($host, $user, $password, $database);
    if (!$link) {
        mysqli_connect_errno();
    } 
    $sql = 'SELECT * FROM burgers';
    $result = mysqli_query($link, $sql);
    $products = mysqli_fetch_all($result, MYSQLI_ASSOC);
    foreach ($products as $product) {
        $product = json_encode($product);
        $product = json_decode($product);
        echo $product->{"PICTURE"};
        ?>
            <div class="product">
                <img src="<?php echo $product->{"PICTURE"} ?>">
            </div>
        <?php
    }
?>
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@neol
Вы получаете из базы массив с элементом $product['PICTURE'], преобразуете в JSON объект, потом преобразуете в PHP объект и только после этого он становится доступен как $product->{"PICTURE"}.

json_encode/json_decode, вам тут нафиг не нужно, просто поменяйте
$product->{"PICTURE"}
на
$product['PICTURE']
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы