如何使用带有pdo的fetch(PDO :: FETCH_ASSOC)来获取多行? [英] How do I fetch mulitiple rows using fetch(PDO::FETCH_ASSOC) with pdo?

查看:87
本文介绍了如何使用带有pdo的fetch(PDO :: FETCH_ASSOC)来获取多行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

testQuery()是我用来从表CATEGORIES中获取所有行的方法

testQuery() is the method I use to get all rows from table CATEGORIES

public function __construct()
 {
 self::$tdb = Database::getConnection();
 }



 #mock query to pull results from db
 public function testQuery()
  {
       $queryAA = "SELECT cat_name, cat_description, cat_id FROM CATEGORIES";
       $stmtAA = self::$tdb->prepare($queryAA);


       if ($stmtAA->execute() == true)
        {
             print("Execution was successful");
             return $stmtAA->fetch(PDO::FETCH_ASSOC);   
        }
       else
        {
            print("Warning statment did not successfully execute");
        }
     }

我通常使用fetchAll(),但被告知要使用fetch,因为它不会占用太多内存. 但是我在使用fetch()和下面的代码检索多个行时遇到了麻烦.

I normally use fetchAll() but I was told to use fetch as it doesn't take up as much memory. But I am having trouble retrieving more than one row using fetch() and the code below.

$test = new test();
$results = $test->testQuery();


foreach ($results as $row)
 {
 print_r($row);
 }

它仅获取1行.那么,如何检索和打印多行呢?前面已经提到了使用迭代,但是我不确定要实现它.任何帮助将不胜感激.谢谢!

It only fetches 1 row. So how do I retrieve and print multiple rows? Using iteration was mentioned before but I'm not sure to implement it. Any help would greatly be appreciated. Thanks!

推荐答案

您可以简单地返回语句对象.
或者,如果您想封装它(以便只能用于获取数据),请使用

You could simply return the statement object.
Or if you want to encapsulate it (so that it can only be used to fetch the data) use the SPL's IteratorIterator

return new IteratorIterator($stmtAA);

然后您就可以使用

foreach( testQuery() as $row) { ... }

在您的脚本中.

这篇关于如何使用带有pdo的fetch(PDO :: FETCH_ASSOC)来获取多行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆