Както е документирано под LOAD DATA INFILE
Синтаксис
:
С други думи, списъкът с колони трябва да описва колоните на базата данни (или потребителски променливи), към които всяко полета за въвеждане трябва да се присвои (вместо да се описва в кое поле за въвеждане може да бъде намерена всяка колона на базата данни). Това, разбира се, е очевидно, когато човек осъзнае, че входният файл не трябва да съдържа имена на полета и следователно би било невъзможно да се приеме последния подход при всякакви обстоятелства.
Следователно, вие искате:
$columns = '(vendor_id, receiver_no, purchase_order_no, destination, po_status)';
Ще трябва също да добавите IGNORE 1 LINES
към командата, за да пропуснете първия ред (с имена на полета):
$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);