[英]Upload CSV file to MySQL using Laravel
我正在嘗試將一個csv
文件上傳到Laravel中的表users
。
這是我的php
腳本:
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]);
}
但是我收到了這個錯誤:
{"error":{"type":"ErrorException","message":"PDO::exec(): LOAD DATA LOCAL INFILE forbidden","file":"C:\\wamp\\www\\lc2\\laravel\\app\\controllers\\UsersController.php","line":224}}
我不知道什么是錯的。 有人可以幫幫我嗎?
請試一試
設置PDO連接選項
在database.php中設置屬性PDO :: MYSQL_ATTR_LOCAL_INFILE
'mysql' => array(
....
'options' => [PDO::MYSQL_ATTR_LOCAL_INFILE=>true],
),
嘗試在sprintf函數之前清理查詢字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.