Я использую Пакет Laravel Excel импортировать файл 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?
Большое спасибо за вашу помощь
Пожалуйста, проверьте код ниже, я нашел то же самое здесь
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');
Других решений пока нет …