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