Som dokumenterats under LOAD DATA INFILE
Syntax
:
Med andra ord bör kolumnlistan beskriva databaskolumnerna (eller användarvariabler) till vilka varje inmatningsfält bör tilldelas (istället för att beskriva i vilket inmatningsfält varje databaskolumn kan hittas). Detta är naturligtvis uppenbart när man inser att indatafilen inte behöver innehålla fältnamn och det skulle därför vara omöjligt att använda det senare tillvägagångssättet under alla omständigheter.
Därför vill du:
$columns = '(vendor_id, receiver_no, purchase_order_no, destination, po_status)';
Du måste också lägga till IGNORE 1 LINES
till kommandot för att hoppa över den första raden (med fältnamn):
$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);