簡體   English   中英

如何使用帶有pdo的fetch(PDO :: FETCH_ASSOC)獲取多個行?

[英]How do I fetch mulitiple rows using fetch(PDO::FETCH_ASSOC) with pdo?

testQuery()是我用來從表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()和下面的代碼檢索多行時遇到問題。

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


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

它只取1行。 那么如何檢索和打印多行? 之前提到過使用迭代,但我不確定是否實現它。 任何幫助將不勝感激。 謝謝!

Fetch確實一次從數據庫中提取數據,但是您需要遍歷行,直到獲得所有數據。

您可能希望將其彈出到循環中以獲取所有數據:

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

像這樣的東西應該做的伎倆:

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

取決於您是填充變量還是在對象中包含代碼。

您只需返回語句對象即可。
或者,如果要封裝它(以便它只能用於獲取數據),請使用SPL的IteratorIterator

return new IteratorIterator($stmtAA);

然后你可以使用

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

在你的腳本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM