【问题标题】:Loop a query to return all values循环查询以返回所有值
【发布时间】:2013-01-07 16:29:29
【问题描述】:

我为我的基本网站设置了基本的 MVC。 有一个类调用(模型)数据库并在其上运行查询,它也有访问视图的视图方法

<?php
class Products {

    public function view( $file_name, $data = null ) 
    {
        if( is_array($data) ) {
           extract($data);
        }

        include 'application/view/' . $file_name;
    }

    public function getProducts () {
        $stmt = Database::get()->query ('SELECT * FROM retrofootball_products WHERE id>4');
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        return $result;

    }
}

然后它将这个传递给视图并显示这个

<?php require 'application/view/template/header.html'; ?>

<div class="product">


<div class="eight columns">

</div>    

<div class="eight columns">
<?php echo "$productname    ";echo  "| Price £$price";?>

</div>

</div>

我想像第一个一样在列表中显示所有字段 Manchester City 1999 Playoff Winning Shirt | Price £40 但我的视图只能像 $productname 一样访问列名

有没有办法遍历我的查询以显示所有产品?我曾尝试返回一个数组,但视图不会让我声明这一点。它只让我通过列名。我在要点中添加了我的小网站的结构:

https://gist.github.com/d7a21ceee5e36b4f6198

【问题讨论】:

    标签: php mysql for-loop pdo


    【解决方案1】:
    public function getProducts () {
        $stmt = Database::get()->query ('SELECT * FROM retrofootball_products WHERE id>4');
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
    

    这将为您提供一个包含所有结果行的数组。然后,在您的模板中,您可以使用 foreach 循环遍历行。

    <?php require 'application/view/template/header.html'; ?>
    <?php foreach($products as $product) { ?>
      <div class="product">
        <div class="eight columns"></div>    
        <div class="eight columns">
          <?php echo htmlspecialchars($product['name']) .' | Price £' . $product['price']; ?>
        </div>
      </div>
    <?php } ?>
    

    【讨论】:

    • 太棒了。你能举个例子说明 for each 循环是如何工作的吗?
    猜你喜欢
    • 2019-10-19
    • 2012-04-26
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多