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

FETCHALLを使用せずにMYSQLPDOで2回フェッチする方法

    カーソルの向きの定数を使用して結果を選択できるように見えます...サンプルコードが来ます...私はこれを試したことがないので、少しプレイする必要があるかもしれません。これも、PDO::FETCH_ORI_FIRSTという仮定に基づいています。 data_seekのように機能し、カーソルを以前の位置に戻すのではなく、最初の位置に置きます。

    $stmt = $pdo->prepare('SELECT id FROM table', array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    
    $first = $pdo->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_FIRST);
    $first_row = $first['id'];
    
    // other stuff
    
    // first iteration we rewind to the first record;
    $cursor = PDO::FETCH_ORI_FIRST;
    
    while (false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC, $cursor))) {
       $id = $row['id'];
       // successive iterations we hit the "next" record
       $cursor = PDO::FETCH_ORI_NEXT; 
       echo $id;
    }
    

    ステートメントを巻き戻すことができるとは思いません...これらのブロックが一連の中間ロジックIDによって分離されていないと仮定すると、ループ内で実行するだけです。

    $STH->setFetchMode(PDO::FETCH_COLUMN); // no need to pull an array
    $count = 0;
    while ($id = $STH->fetch()) {      
      if($count === 0) {
       $first_row = $id;
      }
      echo $id;
      $count++;
    }
    


    1. 作業フォルダを使用したソース管理データベース

    2. SQLiteにテーブルが存在するかどうかを確認する方法

    3. 外部phpファイルJoomlaにJfactoryクラスを含める

    4. MySQLが最適なインデックスを使用しないのはなぜですか