Проблема запроса PHP PDO возвращается как object => «queryString»

0

Я использую PDO и помещаю свой запрос в блок try, я его fetchAll(PDO::FETCH_ASSOC), а затем вызываю execute на нем, следующий fetchAll(PDO::FETCH_ASSOC) на нем. с тем внутри строки мне нужен текст, который я поместил PHP в цикл foreach, с переменной $tools виде $obj. Я тогда "думал", что я звонил, когда я ввел в свой код переменную $obj со ссылкой от mySQL "имя", "цена" и "код". ошибка просто выплескивания object(PDOStatement)#2(1){["queryString"]}=>...the Sql statmement. строки запроса object(PDOStatement)#2(1){["queryString"]}=>...the Sql statmement.

try {
    $tools = $dbh->prepare("SELECT t.item_code as code, t.item_name as 
 name, t.retail_price as retail,
                            t.sale_price as price, t.item_pieces as 
 pieces, t.qty as quantity,
                             t.sold as sold, b.brand as brand, 
 c.category as category 
                                 FROM Tools AS t 
                                 JOIN Images AS i ON t.t_id = i.t_id
                                  JOIN Brands AS b ON t.b_id = b.b_id 
                                 JOIN Categories AS c ON t.c_id = 
c.c_id 
                                 LEFT OUTER JOIN Types as tt ON tt.t_id = t.tt_id");
    $tools->execute();
    $tools->fetchAll(PDO::FETCH_ASSOC);
 }catch (PDOException $e) {
    echo 'unable to retrieve data';
     echo $e->getMessage();
    exit();
}
<?php
                    foreach($tools as $obj)  {
                    ?>
                    <div class="col-xs-12 col-sm-6 col-md-3">
                         <article class="card">
                            <p class="text-center">
                                Item: <?php echo $obj->name; ?><br>
                                Brand: <br>
                                Price: <?php echo $obj->price; ?><br>
                                <button class="btn btn-default btn-lg" 
value="<?php echo $obj->name; ?>">
                                    <a href="#"><?php echo $obj->code; 
 ?></a>
                                </button>
                            </p>
                         </article>
                     </div>
                     <?php }  ?>

кодовое сообщение с веб-страницей.

'object(PDOStatement)#2 (1) { ["queryString"]=> string(609) "SELECT t.item_code as code, t.item_name as name, t.retail_price as retail, t.sale_price as price, t.item_pieces as pieces, t.qty as quantity, t.sold as sold, b.brand as brand, c.category as category FROM Tools AS t JOIN Images AS i ON t.t_id = i.t_id JOIN Brands AS b ON t.b_id = b.b_id JOIN Categories AS c ON t.c_id = c.c_id LEFT OUTER JOIN Types as tt ON tt.t_id = t.tt_id" }'
Теги:
pdo

1 ответ

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

$tools->fetchAll(PDO::FETCH_ASSOC); это проблема. fetchAll извлекает все строки из инструкции и возвращает их. Если вы собираетесь использовать его, вам нужно назначить результат этого выражения другой переменной, например:

$results = $tools->fetchAll(PDO::FETCH_ASSOC);

Затем вы можете foreach($results... вместо foreach($tools...


Кроме того, вы должны просто удалить выражение fetchAll. PDOStatement реализует traversable и может быть непосредственно повторен с помощью foreach после его выполнения без явного использования метода выборки.

Ещё вопросы

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