Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Lelaran Melalui PDO Ambil Keputusan Berbilang Kali?

Bagaimana untuk Lelaran Melalui PDO Ambil Keputusan Berbilang Kali?

Barbara Streisand
Barbara Streisandasal
2024-10-30 07:52:28684semak imbas

How to Iterate Through PDO Fetch Results Multiple Times?

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!

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