PDOStatementはTraversableインターフェイスを実装
PDOStatement implements Traversable {
となっているように、PDOStatementクラスはTraversableインターフェイスを実装しています。
なので、execute()を実行したPDOStatementオブジェクトを直接foreach()に突っ込んでループさせることが出来ます。
<?php $stmt->execute(); foreach ( $stmt as $row ) { echo( $row[ 'data' ] ); } ?>
ただしこの場合、PDOStatementからのfetchが内部フラグ「PDO_FETCH_USE_DEFAULT」で実行されます。つまりデフォルトでは「PDO::FETCH_BOTH」になります。
上記のforeach内での暗黙fetch時のオプションを変更したい場合は、PDOStatement::setFetchMode()を使ってあらかじめフェッチモードを変更しておきます。
<?php $stmt->setFetchMode( PDO::FETCH_ASSOC ); ?>