我如何获取与使用取PDO(PDO :: FETCH_ASSOC)mulitiple行?(How do

2019-07-31 04:31发布

testQuery()是方法我用得到从表格类别中的所有行

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(),但我被告知要使用取,因为它不会占用尽可能多的内存。 但我无法获取使用取()多行和下面的代码。

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


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

它仅取1行。 那么,如何检索和打印多行? 使用迭代是前面提到的,但我不知道要实现它。 任何帮助将大大赞赏。 谢谢!

Answer 1:

你可以简单的返回语句对象。
或者,如果你想将其封装(所以它只能被用来获取数据)使用了SPL的IteratorIterator

return new IteratorIterator($stmtAA);

那么你可以使用

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

在您的脚本。



Answer 2:

从数据库中获取一次一个确实拉数据,但需要通过行迭代,直到你把所有的数据。

你可能想跳进一个循环这让所有的数据:

$stmtAA->fetch(PDO::FETCH_ASSOC);

这样的事情应该做的伎俩:

while($row=$this->prepared->fetch(PDO::FETCH_ASSOC))
{
    $this->ID=$row['id'];
    $something=$row['something'];
}

根据如果你是填充变量或有一个对象中的代码上。



文章来源: How do I fetch mulitiple rows using fetch(PDO::FETCH_ASSOC) with pdo?