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);
?>