sql >> Databáze >  >> RDS >> Mysql

Jak načíst 2krát v MYSQL PDO bez FETCHALL

Beru to zpět, vypadá to, že můžete použít obsah orientace kurzoru k výběru výsledku... přichází ukázkový kód... Nezkoušel jsem to, takže si možná budete muset trochu pohrát. To je také založeno na předpokladu, že PDO::FETCH_ORI_FIRST funguje jako data_seek a nechává kurzor na první pozici, na rozdíl od toho, aby jej vrátil do předchozí polohy.

$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;
}

Nemyslím si, že můžete přetočit prohlášení... Za předpokladu, že tyto bloky nejsou odděleny hromadou zprostředkovatelských logických id, udělejte to ve smyčce.

$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. Jak vytvořit klon vašeho databázového clusteru MySQL nebo PostgreSQL

  2. Lower_case_table_names=1 na Ubuntu 18.04 neumožňuje spuštění mysql

  3. Jak vynutit jedinečné omezení v MySQL?

  4. Vložení více řádků do mysql