Good day. I'm trying to organize the import of CSV
in MySql
but there are problems with the encoding. All records except for Latin and numerals are stored with krakozyabrami. Tell me how to solve the problem? Below is the code.
$connect = mysql_connect("localhost","admin","12345") or die('No connection to server'); mysql_query('SET NAMES utf8'); mysql_select_db("12345",$connect) or die('No connection to DB!'); $max_file_size = 5; // Максимальный размер файла в МегаБайтах if($_POST['update']=='ok') { // СТАРТ Загрузка файла на сервер if($_FILES["filename"]["size"] > $max_file_size*1024*1024) { echo 'Максимальный размер файла '.$max_file_size.' Mb!'; include('file_upload.php'); exit; } if(copy($_FILES["filename"]["tmp_name"],$path.$_FILES["filename"]["name"])) { echo("Фаил "."<b>".$_FILES["filename"]["name"]."</b>"." Был успешно загружен"); } else { echo 'Ошибка загрузки'; include('file_upload.php'); exit; } $file = fopen('php://memory', 'w+'); fwrite($file, iconv('CP1251', 'UTF-8', file_get_contents($_FILES["filename"]["name"]))); rewind($file); mysql_query("TRUNCATE TABLE `ppppp`"); // Очистка старой таблицы $r = 0; // это строки в файле while (($row = fgetcsv($file, 40000, ";")) != FALSE) // $file - имя файла; 1000 - длина; ,(запятая) - это разделитель полей { $r++; if($r == 1) {continue;} // Не дает записать в БД первую строку (бывает так, что первая строка используется для заголовков) $ins="INSERT INTO ppppp (w,ww,www,wwww,wwwww) VALUES ('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]')"; mysql_query($ins); //echo mysql_errno() . ": " . mysql_error(); // это вывод результата. если че, то можно закоментить } fclose($file); }
Table in UTF-8
base too.