Saya mengambil kembali sepertinya Anda dapat menggunakan contants orientasi kursor untuk memilih hasil ... kode sampel datang ... Saya belum mencoba ini sehingga Anda mungkin perlu bermain sedikit. Ini juga didasarkan pada asumsi bahwa PDO::FETCH_ORI_FIRST
bertindak seperti data_seek dan meninggalkan kursor di posisi pertama sebagai lawan mengembalikannya ke posisi sebelumnya.
$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;
}
Saya tidak berpikir Anda dapat memundurkan pernyataan... Dengan asumsi blok ini tidak dipisahkan oleh sekelompok logika perantara, lakukan saja dalam satu lingkaran.
$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++;
}