2011-03-04 112 views
0

我真的不明白,因为PDOStatement对象的点:PHP PDOStatement对象使用fetchall第二次

$PDO = new PDO(); 
$PDOS = $PDO->query($sql); 

var_dump($PDOS->fetchAll()); //will return data 
var_dump($PDOS->fetchAll()); //empty 

是否有需要传递,使第二次使用fetchall返回数据设置了一个param,但没有再次执行SQL?

回答

0

只需将第一次调用fetchAll()的结果存储到PHP变量中即可。任何你不能这样做的理由?

$results = $PDOS->fetchAll(); 

然后,您可以使用$results尽可能多地在不对数据库征税的情况下进一步征税。

+0

是的,我知道,我在考虑fetchAll后$ PDOS不会松动状态,并且结果将始终可用于方法请求。 – 2011-03-04 15:22:37

+0

我认为它失去状态的原因是因为fetchAll()实际上是从mysql请求结果行,而不是让你访问它已经获取和存储的结果。它可能会使用查询缓冲与MySQL:http://www.php.net/pdo-mysql#pdo-mysql.constants – 2011-03-05 23:26:16

相关问题