首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用单例设计模式获取数据库数据

用单例设计模式获取数据库数据
EN

Stack Overflow用户
提问于 2016-05-01 13:16:07
回答 3查看 681关注 0票数 0

下面我使用单例设计模式连接到database.In,我在我的数据库上运行了一个查询,我想从这个查询中获取数据:

代码语言:javascript
复制
$db = Db::connect();
$query = $db->query("SELECT * FROM myTable");
while ($row = ???) {
// echo 'myTable' fields here. like = echo $row['someField']
}

我的Db类:

代码语言:javascript
复制
class Db
{
    private $connection;
    private static $instance;

    private function __construct()
    {
        $host = "localhost";
        $user = "root";
        $pass = "";
        $name = "dictionary";

        $this->connection = new mysqli($host, $user, $pass, $name);
    }

    public static function connect()
    {
        if (self::$instance == null) {
            self::$instance = new Db();
        }

        return self::$instance;
    }

    public function query($sql)
    {
        $result = $this->connection->query($sql);
        $records = array();
        while ($row = $result->fetch_assoc()) {
            $records[] = $row;
        }
        return $records;
    }
}

在我的代码中,我应该写什么而不是???

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-01 13:22:35

替换

代码语言:javascript
复制
while ($row = ???) {
    // echo 'myTable' fields here. like = echo $row['someField']
}

使用

代码语言:javascript
复制
foreach($query as $row)
    echo $row['someField'];

注意:例如,您可能希望将$query重命名为$rows,因为这是一个更合适的名称。

票数 0
EN

Stack Overflow用户

发布于 2016-05-01 13:25:44

while循环的每次迭代中,使用array_shift()函数从结果集中获取当前行,如下所示:

代码语言:javascript
复制
while ($row = array_shift($query)) {
    echo $row['someField'] . "<br />";
}

以下是参考资料:

  • array_shift()
票数 0
EN

Stack Overflow用户

发布于 2016-05-01 13:29:49

对数据库类的->query()方法的调用将返回一个结果行数组。因此,您所需要做的就是像任何其他数组一样处理该数组。

代码语言:javascript
复制
$db = Db::connect();
$rows = $db->query("SELECT * FROM myTable");
foreach ($rows as $row ) {
   echo $row['someField'];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36967098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档