2015-02-28 10 views
5

Ich versuche, eine csv Datei auf die Tabelle users in Laravel hochladen.Upload CSV-Datei zu MySQL mit Laravel

Das ist mein php Skript:

private function _import_csv($path, $filename) 
    { 

     $csv = $path . $filename; 
     $query = sprintf("LOAD DATA local INFILE '%s' INTO TABLE users FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' LINES TERMINATED BY '\\n' IGNORE 0 LINES (`firstname`, `lastname`, `username`, `gender`, `email`, `country`, `ethnicity`, `education` )", addslashes($csv)); 
    return DB::connection()->getpdo()->exec($query); 

} 



public function uploadUsers(){ 


    if (Input::hasFile('fileInput')){ 

     $file = Input::file('fileInput'); 
     $name = time() . '-' . $file->getClientOriginalName(); 

     $path = 'public/uploads/'.date('Y/m/'); 

     $file->move($path, $name); 
     $this->_import_csv($path, $name); 

    } 

    return Response::json(["success"=>true]); 
} 

Aber ich bin immer diese Fehlermeldung:

{"error":{"type":"ErrorException","message":"PDO::exec(): LOAD DATA LOCAL INFILE forbidden","file":"C:\\wamp\\www\\lc2\\laravel\\app\\controllers\\UsersController.php","line":224}} 

Ich weiß nicht, was falsch ist. Kann mir bitte jemand helfen?

Antwort

15

Bitte versuchen Sie es

Set PDO Anschlussmöglichkeiten

Set-Attribut PDO :: MYSQL_ATTR_LOCAL_INFILE in database.php

'mysql' => array(
      .... 
      'options' => [PDO::MYSQL_ATTR_LOCAL_INFILE=>true], 
     ), 
+1

Danke Kumpel :) – Hamelraj

+0

es für mich arbeiten ist .. ! –

-2

Versuchen Sie, die Abfragezeichenfolge vor der Funktion sprintf zu bereinigen.