Menetapkan Semula Iterator untuk Traversal Tatasusunan Berulang dalam PDO
PDO menyediakan pendekatan yang lebih mantap dan berorientasikan objek untuk interaksi pangkalan data. Apabila beralih daripada kaedah MySQL SELECT kepada PDO, menetapkan semula penuding tatasusunan untuk mengulang melalui hasil yang diambil beberapa kali boleh menjadi mencabar.
Untuk mencapai ini dalam MySQL, mysql_data_seek($result, 0) digunakan. Dengan PDO, tetapan semula penunjuk mudah tidak disokong. Sebaliknya, anda perlu mempertimbangkan pendekatan yang berbeza.
Penyelesaian: Simpan dan Gelung Semula Tatasusunan
Penyelesaian terletak pada menyimpan hasil yang diambil ke dalam tatasusunan dan kemudian menggelung melalui tatasusunan dua kali. Dengan berbuat demikian, anda melepaskan diri daripada lelaran PDO dan mendapat kawalan ke atas penunjuk dalaman tatasusunan.
Begini caranya:
<code class="php">$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 of the loop } foreach ($rows as $r) { // Second run of the loop }</code>
Pendekatan ini mengelakkan kerumitan menetapkan semula lelaran PDO dan menyediakan penyelesaian yang lebih mudah untuk mengulangi hasil yang diambil beberapa kali.
Atas ialah kandungan terperinci Bagaimana untuk Lelaran Melalui PDO Ambil Keputusan Berbilang Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!