Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man 2 mal in MYSQL PDO ohne FETCHALL holt

Ich nehme an, das sieht so aus, als könnten Sie die Cursor-Orientierungskonstanten verwenden, um das Ergebnis auszuwählen ... Beispielcode kommt ... Ich habe das nicht versucht, also müssen Sie vielleicht ein bisschen spielen. Dies basiert auch auf der Annahme, dass ein PDO::FETCH_ORI_FIRST verhält sich wie ein data_seek und lässt den Cursor an der ersten Position, anstatt ihn zu dem zurückzusetzen, was er vorher war.

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

Ich glaube nicht, dass Sie eine Aussage zurückspulen können ... Angenommen, diese Blöcke sind nicht durch eine Reihe von Zwischenlogiken getrennt, tun Sie es einfach in der Schleife.

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