sql >> データベース >  >> RDS >> Mysql

foreachとfetchを使用したPHPPDO

    PDOStatement$usersにあります )はフォワードカーソルです。つまり、一度消費されると(最初のforeach 反復)、結果セットの先頭に巻き戻されません。

    foreachの後でカーソルを閉じることができます ステートメントを再度実行します:

    $users       = $dbh->query($sql);
    foreach ($users as $row) {
        print $row["name"] . " - " . $row["sex"] . "<br/>";
    }
    
    $users->execute();
    
    foreach ($users as $row) {
        print $row["name"] . " - " . $row["sex"] . "<br/>";
    }
    

    または、調整されたCachingIteratorを使用してキャッシュすることもできます フルキャッシュを使用する場合:

    $users       = $dbh->query($sql);
    
    $usersCached = new CachedPDOStatement($users);
    
    foreach ($usersCached as $row) {
        print $row["name"] . " - " . $row["sex"] . "<br/>";
    }
    foreach ($usersCached as $row) {
        print $row["name"] . " - " . $row["sex"] . "<br/>";
    }
    

    CachedPDOStatementを見つけます 要旨としてのクラス 。キャッシュイテレータは、PDOStatementのすべてのプロパティとメソッドを引き続き提供するため、結果セットを配列に格納するよりもおそらく適切です。 ラップしたオブジェクト。



    1. SqlQueryを使用してストアドプロシージャからの複数の結果を処理する

    2. java.library.pathにocijdbc9がありません

    3. SQLServerのトリガーイベントタイプの階層リストを返すクエリ

    4. MySQLテーブルからの一意性制約の削除