Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да извличам 2 пъти в MYSQL PDO без FETCHALL

Взимам това назад, изглежда, че можете да използвате съдържанието на ориентацията на курсора, за да изберете резултата... примерен код идва... Не съм пробвал това, така че може да се наложи да поиграете малко. Това също се основава на предположението, че 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;
}

Не мисля, че можете да превъртите изявление... Ако приемем, че тези блокове не са разделени от куп междинни логически идентификатори, просто го направете в цикъла.

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Избор от две таблици с вътрешно присъединяване и ограничение

  2. Изберете всички редове с изключение на един в MySQL

  3. Получаване на средната стойност на първите 10 ученици от всяко училище

  4. Грешка в TypeScript при използване на Op.between в Sequelize с дати

  5. Вмъкване на запис в колона JSON в postgres