Cofam to, wygląda na to, że możesz użyć wartości orientacji kursora, aby wybrać wynik... nadchodzi przykładowy kod... Nie próbowałem tego, więc być może będziesz musiał trochę pograć. Jest to również oparte na założeniu, że PDO::FETCH_ORI_FIRST
zachowuje się jak data_seek i pozostawia kursor na pierwszej pozycji, w przeciwieństwie do zwracania go do tego, co było wcześniej.
$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;
}
Nie sądzę, że można cofnąć instrukcję... Zakładając, że te bloki nie są oddzielone garścią pośredniej logiki, po prostu zrób to w pętli.
$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++;
}