2012-01-14 2 views
0

다음 스크립트를 작성하여 CSV 파일을 mysql 데이터베이스로 가져옵니다. 사용자가 먼저 로그인해야하며 업로드 할 보안 권한을 다른 파일에서 검사합니다.이 값이 참이면 파일을 업로드 할 수 있으며 파일 업로드는 csv 만 업로드 한 다음 다음을 허용합니다 부분이 파일을 가져옵니다.csv를 업로드하고 mysql 데이터베이스로 가져 오기

나는 아래에서 올바른 코드를 사용하고 있습니까? csv 레이아웃이 잘못된 경우에도 가져 오기를 거부 할 수 있습니까? csv가 올바르게 포맷 된 경우 이것이 잘못 될 수 있다고 우려했습니다. 이 기능은이 프로젝트의 요구 사항으로 요청되었으므로 가능한 한 바보 증명으로 만들려고 노력하고 있습니다.

<?php 
$uploadedcsv = './uploads/'.$filename.''; 
$sql = 'LOAD DATA LOCAL INFILE "'.$uploadedcsv.'" INTO TABLE '.$table.' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" IGNORE 1 LINES' or die(mysql_error()); 
?> 

답변

2

당신이하지 않는 100 %는 사용자에 의존하고 당신이하지 않은 것 같다, 올바른 있는지 확인하기 위해 맹목적으로 업로드 된 파일을 가져올 수없는 좋은, 그러나 첫번째 것 .

이렇게하려면 파일을 열고 읽어야합니다. 예 : fgetcsv으로 변경하고 데이터 일관성을 줄 단위로 확인하십시오.


당신은 웹에 대한 예제를 많이 찾을 수 있습니다. 여기

은 일부입니다 :

+0

감사합니다. – user1148760

0

그것은 MySQL을 통해 수행하지만, 기본 LOAD 데이터 INFILE에 의해 할 수는 CSV와 다른 형식을 예상하고있다.

If you specify no FIELDS or LINES clause, the defaults are the same as if you had written this: 

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' STARTING BY '' 

문서 노트, CSV 파일을 처리 할 때의 경우 : 문서에서 쉼표로 구분 된 ""로 묶인 값과 라인 분리 \ 연구에 의해 처리의 예입니다

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES; 

\ n

파일을 가져 오는 데이 기능을 사용하려면 문장이 업로드 파일의 CSV 형식과 일치하는지 확인하고이 방법으로 가져올 수 있습니다.