PDOStatementはTraversableインターフェイスを実装

PHP: PDOStatement - Manual

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 );
?>