0

I have a php file that imports a CSV file into my database. Since my hosting provider upgraded to PHP 5.4, I get an error on the line 'LINES TERMINATED BY ', but I am not sure why. Here is my code:

<?php
    require('phpsqlajax_dbinfo.php');
    $databasehost = $db_host; 
    $databasename = $db_name; 
    $databasetable = "tbl_csvImport"; 
    $databaseusername=$db_user; 
    $databasepassword = $db_pass; 
    $fieldseparator = ","; 
    $lineseparator = "\n";
    $csvfile = "doecsv.csv";
    echo $lineseparator;
    if(!file_exists($csvfile)) {
        die("File not found. Make sure you specified the correct path.");
    }

    try {
        $pdo = new PDO("mysql:host=$databasehost;dbname=$databasename", 
            $databaseusername, $databasepassword,
            array(
                PDO::MYSQL_ATTR_LOCAL_INFILE => true,
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            )
        );
    } catch (PDOException $e) {
        die("database connection failed: ".$e->getMessage());
    }

    $pdo->exec("DELETE FROM `$databasetable`");

    try {
        $affectedRows = $pdo->exec("
            LOAD DATA LOCAL INFILE ".preg_replace('/"[^"]+"/','',$pdo->quote($csvfile))." INTO TABLE `$databasetable`
            FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
            OPTIONALLY ENCLOSED BY ".$pdo->quote('"')."
            LINES TERMINATED BY ".$pdo->quote($lineseparator)."IGNORE 1 LINES");
    } catch (Exception $e) {
        die ("CSV Parse Failed: ".$e->getMessage()." | Error on line: ".$e->getLine());
    }

    echo" Success. <br/>";  
?>

Error Code: SQLSTATE[42000]: Syntax error or access violation: 1148 The used command is not allowed with this MySQL version | Error on line: 35

1 Answers1

0

I found a workaround that works for me:

http://crewow.com/CSV-Importer-in-MySQL.php