Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menetapkan Semula Penunjuk Tatasusunan dalam Keputusan PDO untuk Berbilang Lelaran?
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!