로드 데이터 infile을 사용하여 데이터베이스의 여러 테이블에 데이터를 업로드하고 있습니다. 내 문제는 업로드 된 데이터에 Y-m-d가 아닌 d/m/Y의 날짜와 같이 형식이 잘못된 데이터가 포함 된 경우입니다.PHP를 통해 데이터로드 InFile을 사용하여 MYSQL에 업로드 할 때 데이터 유효성 확인
데이터가 삽입되는 것을 막지 않으며, 0000-00-00으로 삽입합니다. 내가 원하는 것은 실패하기 때문에 진행하기 전에 데이터를 수정하도록 사용자에게 알릴 수 있습니다.) (지금 array_diff이 내가 실현 ...
function check_csv($f_a, $f_b)
{
$csv_upload = array_map("str_getcsv", file($f_a,FILE_SKIP_EMPTY_LINES))[0];
$csv_sample = array_map("str_getcsv", file($f_b,FILE_SKIP_EMPTY_LINES))[0];
$match = 'true';
foreach ($csv_sample as $key => $value) {
if($value != $csv_upload[$key]){
$match = 'false';
break 1;
}
}
return $match;
}
:
나는 현재 다음 작은 함수를 사용하여 샘플 파일에 대해 비교하여 올바른 열을 포함 업로드 된 파일을 확인하기 위해 검사를하고있는 중이 야 기능이 유용 할 수도 있습니다. 나중에 살펴 보겠습니다.이 문제로 되돌아 가면,이 함수 내에서 각각의 값을 확인해야 할 필요가 있거나 원하는 동작을 강제하는 Load Data Infile 옵션이 있습니다.
정말 고마워요. 필자의 기능과 관련해서는 파일에 예상 열과 예상 순서가 포함되어 있는지 확인하는 데만 관심이 있었기 때문에 의도적으로 첫 번째 행만 확인합니다. 데이터는 상대적으로 제어되는 소스에서 나온 것이므로 실제로 행 2 (또는 열 머리 뒤에있는 데이터의 첫 번째 행)에있는 데이터의 유효성 검사에만 관심이 있으므로 날짜 확인과 관련하여 스 니펫을 잘 사용하도록 지정합니다. 다시 한번 감사드립니다. –
또한 내 스크립트는 다양한 열 번호와 이름을 가진 다른 데이터 파일을 처리하는 일반 스크립트입니다. 그러므로 나는 그것을 파일의 알려진 좋은 샘플 복사본과 비교한다. –
괜찮습니다. 필요한 샘플 파일의 헤더를 읽고 각 행의 열 수를 샘플 파일의 열 수와 비교할 수 있습니다. 어쨌든 각 행의 날짜를 확인해야합니다. 네가하는 말은 내가 제공 할 대답을 바꾸지 못한다. – Sherif