我如何回滚pdo结果?

时间:2012-01-11 17:25:02

标签: php pdo

我知道之前已经问过这个问题,但我尝试了eveything并且无法找到它是如何工作的。 我有一个准备好的查询,我需要使用两次while()循环,如下所示:

$query = $pdo->prepare('SELECT ...');
$query->execute();
while( $results = $query->fetch() ){
 // instructions
}

// rewind
while( $results = $query->fetch() ){
 // instructions
}

由于

2 个答案:

答案 0 :(得分:3)

要扩展上述答案,您可以使用:

$results = $query->fetchAll();

$ results现在是一个包含结果集的数组,所以:

foreach ($results as $row) ...

或者使用MySQL,您可以使用缓冲查询:

$stmt = $db->prepare('SELECT ...', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

fetchAll()方法将独立于数据库供应商,但将具有更高的内存要求。

答案 1 :(得分:-1)

可能就像在第一次迭代中获得所有结果并在第二次循环中循环一样简单:

$res = array();
while( $results = $query->fetch() ){
   $res[] = $results;
   // instructions
}

foreach($res as $results){
   // instructions
}