我使用Laravel Excel package将CSV文件导入我的应用程序,并尝试将其数据与我的数据库进行匹配。
目前的代码是:
Excel::load($file, function($reader) { //Load it into Excel package
$reader->each(function($row) { //Loop through row by row
$firstname = $row->forename;
$surname = $row->surname;
$firstname = str_replace('"', '', $firstname); //Remove the enclosure "
$surname = str_replace('"', '', $surname);
$client = DB::table('clients')->where('firstname', $firstname)->where('surname', $surname)->first();
if ($client!=null) {
print $client->id."<br><br><br>";
} else {
print "Fail<br><br><br>";
}
});
})->get();
即使我确定应该进行匹配,所有查询都会失败。运行一些查询调试来获取查询和绑定,我看到了这个(示例数据):
string 'select * from `clients` where `firstname` = ? and `surname` = ? limit 1' (length=71)
array (size=2)
0 => string 'E�l�i�z�a�b�e�t�h' (length=17)
1 => string '��W�e�s�s�o�n��' (length=15)
如您所见,从CSV中取出的所有字符串在每个字符后都有一个。。
我认为这可能是某种编码问题?我是否需要从CSV文件中转义或处理字符串才能像普通的PHP字符串一样使用它?
非常感谢你的帮助
答案 0 :(得分:0)
请检查下面的代码,我在这里找到了相同的代码 http://www.maatwebsite.nl/laravel-excel/docs/import#extra 检查'输入编码'部分 希望这有帮助
// When utilising a closure, you can pass the input encoding as third parameter.
Excel::load('filename.csv', function($reader) {
}, 'UTF-8');