【问题标题】:Displaying array results of query in another file在另一个文件中显示查询的数组结果
【发布时间】:2014-08-14 20:35:12
【问题描述】:

我正在刷新我对 OOP 的记忆,并学习如何将其应用到 PHP 中,重点是关注点分离 (MVC)。为了练习,我在网上找到并编辑了一些代码。 query() 函数从我的 MySQL 数据库返回数据。这是那个类文件:

 <?php
    // ClassPractice.php

    class ClassPractice {
        public function __construct($host, $user, $pass, $name) {
            $this->host = $host;
            $this->user = $user;
            $this->pass = $pass;
            $this->name = $name;
        }

        protected function connect() {
            return new mysqli($this->host, $this->user, $this->pass, $this->name);
        }

        public function query($query) {
            $db = $this->connect();
            $result = $db->prepare($query);
            $result->execute();
            $result->bind_result($username);

            while ( $row = $result->fetch_object() ) {
                $rows[] = $row;
            }

            return $rows;
        }
    }
 ?>

没有关于如何在另一个文件中实例化此类的示例,所以我自己做了,并从该文件中调用了 query() 方法:

    <?php
       // index.php

       include('ClassPractice.php');

       $class = new ClassPractice('host', 'user', 'password', 'database');

       $results = $class->query("SELECT username FROM user");

       // Display formatted results of query here

?>

由于 MVC 的规则规定视图必须与模型和控制器分开处理,我想用这个文件显示 query() 方法的结果。我对此进行了无休止的研究,但没有发现任何特定于我正在尝试做的事情。通常,我会将方法调用分配给一个变量,然后根据需要操作或显示该变量。在这种情况下,这似乎不是一个选项。我尝试将方法调用中的查询分配给数组变量,并使用 foreach 方法来显示结果。到目前为止,没有任何效果。

【问题讨论】:

  • 编辑:将 query() 方法的调用分配给 index.php 中的变量 $results。

标签: php mysql


【解决方案1】:

您的代码错误,请更改此行的“while”

while ( $result->fetch() ) {
$rows[] = $row;
}

【讨论】:

  • 我也试过了,但我猜我的 foreach 不正确。我改变了我的while循环并修复了我的foreach循环,它现在可以工作了。谢谢!
猜你喜欢
  • 2015-09-22
  • 2012-06-19
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 2016-04-06
相关资源
最近更新 更多