Zgodnie z dokumentacją w sekcji LOAD DATA INFILE
Składnia
:
Innymi słowy, lista kolumn powinna opisywać kolumny bazy danych (lub zmienne użytkownika), do których każde pola wejściowe należy przypisać (zamiast opisywać, w którym polu wejściowym znajduje się każda kolumna bazy danych). Jest to oczywiście oczywiste, gdy zdamy sobie sprawę, że plik wejściowy nie musi zawierać nazw pól, a zatem niemożliwe byłoby zastosowanie tego drugiego podejścia we wszystkich okolicznościach.
Dlatego chcesz:
$columns = '(vendor_id, receiver_no, purchase_order_no, destination, po_status)';
Będziesz także musiał dodać IGNORE 1 LINES
do polecenia, aby pominąć pierwszą linię (z nazwami pól):
$affectedRows = $pdo->exec("
LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
LINES TERMINATED BY ".$pdo->quote($lineseparator)."
IGNORE 1 LINES ". $columns);