Soalan ini menangani beberapa cabaran yang dihadapi semasa mengimport data CSV ke dalam pangkalan data MySQL menggunakan PHP.
Kod yang disediakan memuat naik fail CSV dan memaparkan kandungannya dengan berkesan. Walau bagaimanapun, ia menghadapi masalah dengan data teks dipaparkan sebagai 0 dalam pangkalan data dan potensi tanda petikan untuk menyertakan data yang diimport.
1. Medan Teks Dipaparkan sebagai 0
Untuk menyelesaikan isu ini, semak pengekodan fail CSV anda. Pastikan ia UTF-8, yang menyokong kedua-dua data teks dan berangka. Selain itu, sahkan bahawa lajur jadual pangkalan data anda ditakrifkan dengan betul untuk menerima data teks.
2. Data Dipetik
Petikan boleh menyertakan data dalam fail CSV. Jika anda menghadapi masalah ini, anda boleh menggunakan mysql_real_escape_string untuk membersihkan data sebelum memasukkannya ke dalam pangkalan data. Fungsi ini melepaskan aksara khas, termasuk petikan, untuk mengelakkan serangan suntikan SQL.
3. Mengabaikan Garis Pengepala
Untuk melangkau baris X pertama fail CSV anda, yang mungkin mengandungi pengepala, gunakan fseek dan fgetc untuk memajukan fail secara manual sebelum memulakan proses import.
4. Format Data
Format data hendaklah kekal sama sepanjang proses import. Nilai angka, termasuk perpuluhan, akan dikekalkan dalam format asalnya. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa MySQL mempunyai jenis data khusus untuk pelbagai format (cth., perpuluhan, apungan, dll.), jadi adalah penting untuk menentukan lajur pangkalan data anda dengan sewajarnya.
5. Isu Prestasi
"Ralat maut" yang dilaporkan menunjukkan bahawa had masa pelaksanaan PHP (30 saat) telah melebihi. Ini biasanya ditemui apabila mengimport set data yang besar. Untuk menyelesaikan masalah ini, anda boleh meningkatkan tetapan max_execution_time dalam fail konfigurasi PHP anda (php.ini) atau melaksanakan mekanisme import terkumpul untuk memproses data dalam bahagian yang lebih kecil berbanding berbilang permintaan.
Kaedah Alternatif
Seperti yang dicadangkan dalam jawapan, anda boleh mempertimbangkan untuk menggunakan ciri LOAD DATA INFILE MySQL. Ini membolehkan anda mengimport data CSV secara langsung menggunakan pertanyaan SQL tunggal, meningkatkan prestasi dan menghapuskan keperluan untuk gelung pemprosesan PHP.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Masalah Import Data CSV dalam PHP/MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!