array fgetcsv ( resource $handle [, int $length [, string $delimiter [, string $enclosure [, string $escape ]]]] )
(PHP 4, PHP 5)

CSV 필드에 대한 파일 포인터와 구문 라인을 가져 오며, CSV 파일 중 빈 줄은 하나의 필드를 NULL로 구성된 배열로 반환되어 에러로 취급하지는 않습니다.

csv파일인 전 세계 ip대역을 열어 보면 6개 필드로 이루어져 있음을 알 수 있습니다.


다음 예제는 csv파일로 구성된 전 세계 ip을 읽어 오게 합니다.

<?php
 $row = 1;
 $handle = fopen("GeoIPCountryWhois.csv", "r");
 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
 }
 fclose($handle);
 ?>

브라우저로 확인해 보면 다음 그림처럼 <br>태그로 구분되어 출력되게 됩니다.


csv 파일을 어떤 형태로 읽어 오는지를 확인하였으니, Mysql에 입력하는 코드를 작성해 보겠습니다.

<?php
 $row = 1;
 $handle = fopen("GeoIPCountryWhois.csv", "r");
 while (($data = fgetcsv($handle, 1000, ",")) !== false) {
    $num = count($data);
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;

    $sql = false;
    $sql = "INSERT INTO ".$table_name." VALUES (";

    for ($c=0; $c < $num; $c++) {
        $sql .= "'" . $data[$c] . "'";
        if($c+1 !== $num){
            $sql .= ", ";
        }
    }
    $sql .= ");";

    echo "$sql<br />";
 }
 fclose($handle);
 ?>

0 댓글