2016-03-23 2 views
1

Любой, кто может предоставить рабочий пример чтения CSV и вставки MySQL - все с utf8? Не могу понять, как это сделать (долгие часы ...). MySQL сопоставляет все utf8mb4_unicode_ci (база данных, таблица, столбцы).PHP CSV читается с вставкой MySQL (utf8)

Спасибо за помощь!

<?php 
header('Content-Type: text/html; charset=UTF-8'); 
mysql_connect("localhost","root",""); 
mysql_query("SET NAMES utf8"); 
mysql_select_db("test"); 

if (!empty($_FILES['csv']['size']) && $_FILES['csv']['size'] > 0){ 

    $file = $_FILES['csv']['tmp_name']; 
    utf8_encode(fgets($file)); 
    $handle = fopen($file,"r"); 

    do { 
     if ($data){ 
      $data = array_map("utf8_encode", $data); 
      mysql_query("INSERT INTO mytable (id,text) VALUES 
      (
       '".addslashes($data[0])."','".addslashes($data[1])."' 
      )");   
     } 
    } 
    while ($data = fgetcsv($handle,1000,",","'")); 
    header('Location: index.php'); die; 
} 
?> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 

<body> 
<form action="index.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
<input name="csv" type="file" id="csv" accept-charset="utf-8"/> 
<button type=submit>UPLOAD</button> 
</form>  
</body> 
</html> 

ответ

1

Я хотел бы предложить использовать INFILE загрузки данных вместо

INFILE DATA НАГРУЗКИ может быть использована для чтения файлов, полученных из внешних источников. Например, многие программы могут экспортировать данные в формате, разделенные запятыми (CSV), http://dev.mysql.com/doc/refman/5.7/en/load-data.html

0

Здесь мы идем. Это рабочий пример PHP CSV, который читается с вставкой MySQL для utf8.

<?php 
header('Content-Type: text/html; charset=UTF-8'); 
mysql_connect("localhost","root",""); 
mysql_select_db("test"); 

if (!empty($_FILES['csv']['size']) && $_FILES['csv']['size'] > 0){ 

     $file = $_FILES['csv']['tmp_name']; 
     $handle = fopen($file,"r"); 
     mysql_query("SET NAMES utf8mb4"); 
     mysql_set_charset('utf8mb4'); 

     do { 
      if ($data){ 
       utf8_encode($data); 
       mb_strtolower($data[0], 'UTF-8'); 
       mb_strtolower($data[1], 'UTF-8'); 

       mysql_query("INSERT INTO mytable (id,text) VALUES 
       (
        '".addslashes($data[0])."','".addslashes($data[1])."' 
       )");   
      } 
     } 
     while ($data = fgetcsv($handle,1000,",","'")); 
     header('Location: index.php'); die; 
} 
?> 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 

<body> 
    <form action="index.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <input name="csv" type="file" id="csv" accept-charset="utf-8"/> 
    <button type=submit>UPLOAD</button> 
</form>  
</body> 
</html> 
Смежные вопросы