-1

そのため、CSVファイルをmysqlデータベースにアップロードしていますが、列名を持つ行0である最初の行を常にスキップする必要があります

現在使用しているコード

    //connect to the database 
    $connect = mysql_connect("localhost","username","password"); 
    mysql_select_db("mydatabase",$connect); //select the table 
    // 

    if ($_FILES[csv][size] > 0) { 

        //get the csv file 
        $file = $_FILES[csv][tmp_name]; 
        $handle = fopen($file,"r"); 

        //loop through the csv file and insert into database 
        do { 
            if ($data[0]) { 
                mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES 
                    ( 
                        '".addslashes($data[0])."', 
                        '".addslashes($data[1])."', 
                        '".addslashes($data[2])."' 
                    ) 
                "); 
            } 
        } while ($data = fgetcsv($handle,1000,",","'")); 
        // 

        //redirect 
        header('Location: import.php?success=1'); die; 

} 

次の行を削除する必要があります Source,First Name,Surname,Phone 1,Phone 2,Contact Email,Title,Ref Number,Date,Status

私はただやろうとしていましたif($data[0]=="Source")が、これに関する問題は、CSV ファイルのレイアウトなどを変更した場合です。

だから私の質問は簡単です。行0の最初の行をスキップできますか?

しかし、最初の行 0 がソースでない場合、CSV ファイルを確認できるようにアラートを受け取ることができますか?

4

3 に答える 3

1

あなたは使用しようとすることに興味があるかもしれませんLOAD DATA INFILE

LOAD DATA INFILE '/path/to/your/file.csv' 
INTO TABLE contacts 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
于 2013-06-28T00:32:23.430 に答える
0

ファイルの最初の行を読み取り、ヘッダー行の場合は破棄します。

    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    // read the first line
    $data = fgetcsv($handle,1000,",","'")
    // if the first line is a header, discard it and read the next
    if ($data[0] == "Source:") {
       $data = fgetcsv($handle,1000,",","'")
    }

    //loop through the csv file and insert into database 
    do { 
        if ($data[0]) { 
            mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES 
                ( 
                    '".addslashes($data[0])."', 
                    '".addslashes($data[1])."', 
                    '".addslashes($data[2])."' 
                ) 
            "); 
        } 
    } while ($data = fgetcsv($handle,1000,",","'")); 
    // 

ちなみに、あなたのdo...whileループは元々持っていたのとは逆向きでした。あなたはそれを読む前にデータを見ていました。私が追加した先読みで、それはうまくいくはずです。

于 2013-06-28T00:31:00.090 に答える