Conforme documentado em
LOAD DATA INFILE
Sintaxe
:Em outras palavras, a lista de colunas deve descrever as colunas do banco de dados (ou variáveis de usuário) para as quais cada os campos de entrada deve ser atribuído (em vez de descrever em qual campo de entrada cada coluna do banco de dados pode ser encontrada). Isso é óbvio quando se percebe que o arquivo de entrada não precisa conter nomes de campo e, portanto, seria impossível adotar a última abordagem em todas as circunstâncias.
Portanto, você deseja:
$columns = '(vendor_id, receiver_no, purchase_order_no, destination, po_status)';
Você também precisará adicionar
IGNORE 1 LINES
ao comando para pular a primeira linha (com nomes de campo):$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);