PHP PDO 查询问题作为对象返回 => "queryString"

标签 php mysql pdo

我正在使用 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/

相关文章:

php - mysql 多对多关系

php - PHP mysql 中的数据未更新

php - PDOException SQLSTATE [42000] : Syntax error or access violation: 1064

php - Yii2:ActiveQuery 可以返回以 SQL 查询的第一列为键的数组吗?

php - 什么是更快的 : in_array or isset?

java - org.json.JSONException : End of input at character 0 of

mysql - upload_max_filesize 即使在修改 php.ini 后也没有改变

php - 安装迁移 (laravel) 期间 mysql 服务器已经消失错误

php - 通过php函数readfile下载大文件不起作用

php - Lumen Jwt 身份验证获取(参数 2 传递给 Tymon\JWTAuth\JWTGuard)错误