sql >> Database >  >> RDS >> Mysql

Hoe 2 keer op te halen in MYSQL PDO zonder FETCHALL

Ik neem aan dat het lijkt alsof je de cursororiëntatie constant kunt gebruiken om het resultaat te selecteren ... voorbeeldcode komt eraan ... Ik heb dit niet geprobeerd, dus misschien moet je een beetje spelen. Dit is ook gebaseerd op de veronderstelling dat een PDO::FETCH_ORI_FIRST werkt als een data_seek en laat de cursor op de eerste positie staan ​​in plaats van hem terug te brengen naar wat hij daarvoor was.

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

Ik denk niet dat je een verklaring kunt terugspoelen... Ervan uitgaande dat deze blokken niet gescheiden zijn door een heleboel intermediaire logica, doe het dan gewoon in de lus.

$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. Duur van gegevens in een globale tijdelijke tabel?

  2. Waarde berekenen met behulp van de vorige waarde van een rij in T-SQL

  3. Hoe kan ik mijn standaarddatabase in SQL Server wijzigen zonder MS SQL Server Management Studio te gebruiken?

  4. Een cumulatief bedrag resetten?