我正在使用 PDO 并将查询放入 try block 中,我准备它,然后对其调用执行,下一步 fetchAll(PDO::FETCH_ASSOC)
在上面。在行内,我需要将 PHP 放入 foreach 循环中的文本,其中 $tools
变量为$obj
。然后,当我在代码中放入变量 $obj
时,我“认为”我正在调用。引用 mySQL 的“名称”、“价格”和“代码”。
仅仅吐出查询字符串的错误
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" }`
最佳答案
$tools->fetchAll(PDO::FETCH_ASSOC);
是一个问题。 fetchAll
从语句中获取所有行并返回它们。如果您要使用它,则需要将该表达式的结果分配给另一个变量,例如:
$results = $tools->fetchAll(PDO::FETCH_ASSOC);
然后你可以使用 foreach($results...
而不是 foreach($tools...
或者,您应该能够仅删除 fetchAll
表达式。 PDOStatement 实现了可遍历,执行后可以直接用 foreach 进行迭代,无需显式使用 fetch 方法。
关于PHP PDO 查询问题作为对象返回 => "queryString",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47933083/