Bagaimana untuk Menetapkan Semula Penunjuk Tatasusunan dalam Keputusan PDO untuk Berbilang Lelaran?

Linda Hamilton
Lepaskan: 2024-10-30 04:09:28
asal
590 orang telah melayarinya

How to Reset the Array Pointer in PDO Results for Multiple Iterations?

PDO Menetapkan Semula Penunjuk Tatasusunan dalam Keputusan

Dalam peralihan daripada MySQL kepada kaedah PDO, seseorang mungkin menghadapi cabaran apabila cuba mengulangi melalui yang diambil tatasusunan dua kali, bermula dari baris sifar setiap kali. Penyelesaiannya terletak pada memahami perbezaan dalam pendekatan antara kedua-dua kaedah.

Di bawah rangka kerja MySQL, fungsi mysql_data_seek memundurkan penuding baris ke kedudukan tertentu dalam tatasusunan terhasil. Dalam PDO, bagaimanapun, fungsi ini tidak tersedia secara langsung. Sebaliknya, seseorang boleh menggunakan dua teknik alternatif untuk mencapai hasil yang diingini.

Menyimpan Keputusan ke Tatasusunan

Pendekatan pertama melibatkan penyimpanan hasil dalam tatasusunan, seperti yang ditunjukkan dalam coretan kod di bawah:

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();

$rows = $stmt->fetchAll();

foreach ($rows as $r) {
    // first run
}

foreach ($rows as $r) {
    // second run
}
Salin selepas log masuk

Dengan menggunakan kaedah fetchAll, keseluruhan set hasil disimpan dalam tatasusunan $rows, membenarkan berbilang lelaran dengan penunjuk tetapan semula.

Pelaksanaan Semula Pertanyaan

Sebagai alternatif, seseorang boleh memilih untuk melaksanakan semula pertanyaan. Walaupun kurang cekap daripada kaedah storan tatasusunan, pendekatan ini mungkin mencukupi apabila set keputusan agak kecil.

$pdo = new PDO('mysql:host=' . $host . ';dbname='.$database, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT * FROM mytable WHERE active = 1 ORDER BY name ASC');
$stmt->setFetchMode(PDO::FETCH_ASSOC);

while($row = $stmt->fetch())
{
    // first run
}

$stmt->execute(); //re-execute the query

while($row = $stmt->fetch())
{
    // second run
}
Salin selepas log masuk

Dengan melaksanakan semula pertanyaan, set hasil baharu dijana, dengan penuding bermula pada baris sifar. Pendekatan ini memastikan bahawa kedua-dua lelaran mempunyai akses kepada set data penuh.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semula Penunjuk Tatasusunan dalam Keputusan PDO untuk Berbilang Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!