Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menetapkan Semula Penunjuk Tatasusunan dalam Keputusan PDO untuk Berbilang Lelaran?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-30 04:09:28591semak imbas

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
}

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
}

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!

Kenyataan:
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