Jeg synes, det ser ud til, at du kan bruge markørens orienteringskontanter til at vælge resultatet... eksempelkode kommer... Jeg har ikke prøvet dette, så du skal muligvis spille lidt. Dette er også baseret på den antagelse, at en PDO::FETCH_ORI_FIRST
fungerer som en data_seek og efterlader markøren på den første position i modsætning til at returnere den til, hvad den var før.
$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;
}
Jeg tror ikke, du kan spole en erklæring tilbage... Forudsat at disse blokke ikke er adskilt af en masse mellemliggende logiske id'er, gør det bare i løkken.
$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++;
}