Взимам това назад, изглежда, че можете да използвате съдържанието на ориентацията на курсора, за да изберете резултата... примерен код идва... Не съм пробвал това, така че може да се наложи да поиграете малко. Това също се основава на предположението, че PDO::FETCH_ORI_FIRST
действа като data_seek и оставя курсора на първата позиция, вместо да го връща към това, което е било преди.
$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;
}
Не мисля, че можете да превъртите изявление... Ако приемем, че тези блокове не са разделени от куп междинни логически идентификатори, просто го направете в цикъла.
$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++;
}