2015-02-28 11 views
5

Próbuję przesłać plik csv do tabeli users w Laravel.Prześlij plik CSV do MySQL przy użyciu Laravel

To mój php scenariusz:

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]); 
} 

Ale ja dostaję ten błąd:

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

nie wiem co jest nie tak. Czy ktoś może mi pomóc?

Odpowiedz

15

Proszę spróbować

Set PDO opcje połączenia

zestaw atrybutów PDO :: MYSQL_ATTR_LOCAL_INFILE w database.php

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

Dziękuje kolego :) – Hamelraj

+0

to działa dla mnie .. ! –

-2

Spróbuj wyczyścić ciąg zapytania przed funkcją sprintf.

Powiązane problemy