Tôi lấy lại điều đó, có vẻ như bạn có thể sử dụng các tiếp điểm hướng con trỏ để chọn kết quả ... mã mẫu sắp tới ... Tôi chưa thử điều này nên bạn có thể cần phải chơi một chút. Điều này cũng dựa trên giả định rằng một PDO::FETCH_ORI_FIRST
hoạt động giống như data_seek và để con trỏ ở vị trí đầu tiên thay vì đưa con trỏ về vị trí cũ.
$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;
}
Tôi không nghĩ rằng bạn có thể tua lại một câu lệnh ... Giả sử các khối này không được phân tách bởi một loạt id logic trung gian, chỉ cần làm điều đó trong vòng lặp.
$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++;
}