Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Fail CSV dengan Cekap daripada Pertanyaan MySQL dalam PHP?

Bagaimana untuk Mencipta Fail CSV dengan Cekap daripada Pertanyaan MySQL dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-12-15 20:34:13413semak imbas

How to Efficiently Create CSV Files from MySQL Queries in PHP?

Mencipta CSV daripada Pertanyaan MySQL dalam PHP

Dalam PHP, seseorang boleh menukar pertanyaan MySQL kepada fail CSV dengan cekap. Mengelakkan fail sementara meningkatkan kemudahalihan dengan menghapuskan keperluan untuk menetapkan kebenaran sistem fail dan menguruskan laluan direktori. Selain itu, fail CSV yang dijana hendaklah termasuk baris pengepala dengan nama medan.

Untuk melaksanakan tugas ini, seseorang boleh menggunakan pendekatan berikut:

Pilihan 1: Menggunakan Kaedah INTO OUTFILE

MySQL menyediakan kaedah INTO OUTFILE untuk terus mengeluarkan hasil pertanyaan kepada fail CSV. Sebagai contoh, pertanyaan berikut mengeksport data daripada jadual my_table ke fail CSV bernama c:/mydata.csv:

SELECT * INTO OUTFILE "c:/mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM my_table;

Pilihan 2: Skrip PHP Tersuai

Sebagai alternatif, seseorang boleh menggunakan skrip PHP tersuai untuk mengambil hasil pertanyaan dan menjana CSV. Ini melibatkan:

  1. Melaksanakan pertanyaan SQL menggunakan mysql_query().
  2. Menentukan bilangan medan menggunakan mysql_num_fields().
  3. Mengulang setiap baris dan medan untuk bina data CSV.
  4. Menetapkan pengepala HTTP yang sesuai untuk Fail CSV.
  5. Mengoutputkan pengepala dan data ke penyemak imbas pengguna atau antara muka muat turun.

Coretan kod berikut menunjukkan pendekatan ini:

$select = "SELECT * FROM table_name";

$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

$fields = mysql_num_fields ( $export );

for ( $i = 0; $i < $fields; $i++ )
{
    $header .= mysql_field_name( $export , $i ) . "\t";
}

while( $row = mysql_fetch_row( $export ) )
{
    $line = '';
    foreach( $row as $value )
    {                                            
        if ( ( !isset( $value ) ) || ( $value == "" ) )
        {
            $value = "\t";
        }
        else
        {
            $value = str_replace( '"' , '""' , $value );
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";

Dengan menggunakan kaedah ini, seseorang boleh menukar hasil pertanyaan MySQL dengan cekap kepada fail CSV sambil memastikan kemudahalihan dan kemasukan pengepala.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Fail CSV dengan Cekap daripada Pertanyaan MySQL dalam PHP?. 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