Rumah  >  Artikel  >  pangkalan data  >  Mengapa Penyata Disediakan PDO Saya Mengambil() Mengembalikan Keputusan Berganda?

Mengapa Penyata Disediakan PDO Saya Mengambil() Mengembalikan Keputusan Berganda?

Barbara Streisand
Barbara Streisandasal
2024-11-03 02:43:30613semak imbas

Why Does My PDO Prepared Statement Fetch() Return Double Results?

Penyata Disediakan PDO Ambil () Mengembalikan Keputusan Berganda

Apabila menggunakan pernyataan yang disediakan PDO, hasil yang diperoleh daripada kaedah fetch() kadangkala boleh nampaknya ditiru. Ini berlaku apabila data yang diingini sedang diambil dua kali setiap baris, menghasilkan dua kali ganda bilangan lajur yang dijangkakan dalam output.

Isu ini berlaku apabila mengambil data menggunakan mod PDO::FETCH_BOTH lalai, yang mendapatkan semula keputusan diindeks oleh kedua-dua nama lajur dan nombor lajur. Untuk mengelakkan pertindihan ini, nyatakan gaya pengambilan alternatif, seperti:

  • PDO::FETCH_ASSOC: Mengembalikan tatasusunan yang diindeks mengikut nama lajur, mengelakkan pertindihan yang disebabkan oleh nombor lajur indeks.
  • PDO::FETCH_NUM: Mengembalikan tatasusunan yang diindeks mengikut nombor lajur, menghapuskan keperluan untuk pengindeksan nama lajur.

Dengan menggunakan salah satu daripada pengambilan ini mod, anda boleh mendapatkan semula bilangan lajur yang betul untuk setiap baris, memastikan bahawa output dipaparkan seperti yang dimaksudkan.

Berikut ialah contoh cara menggunakan PDO::FETCH_ASSOC:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) {
    $csv .= '"' . join('","', str_replace('"', '""', $rows_get_rows)) . "\"\n";
}

Kod ini akan mendapatkan semula data sebagai tatasusunan bersekutu, menghapuskan lajur pendua.

Atas ialah kandungan terperinci Mengapa Penyata Disediakan PDO Saya Mengambil() Mengembalikan Keputusan Berganda?. 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