2015-10-16 4 views
0

Кодекс я попытался этоКак экспортировать данные из excel в mysql с помощью php?

$source = fopen('filename.csv', 'r') or die("Problem open file"); 
    while (($data = fgetcsv($source, 1000, ",")) !== FALSE) 
    { 
     $name = $data[0]; 
     `$mobile = $data[1]; 


     mysql_query("INSERT INTO `table` (`name`,`mobile`) VALUES ('".$name."','".$mobile ."') "); 


    } 
    fclose($source); 

но он принимает только последнюю запись ...

ответ

0

Вот простой способ сделать это, используя PHP fgetcsv() и mysqli():

1. Соединить в Mysqli:

$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db"); 

2. Откройте файл CSV:

$source = fopen('filename.csv', 'r') or die("Problem open file"); 

3. С петлей читать CSV и поместить ваши запросы вставляет в переменную:

$query=""; 
do { 
    if ($fields[0]) { 
     $query.="INSERT INTO `table_name` (`name`, `mobile`) VALUES 
      ( 
       '".addslashes($fields[0])."', 
       '".addslashes($fields[1])."' 
      ) 
     ;"; 
    } 
} while ($fields = fgetcsv($source,1000,",","'")); 

4. преобразования приложений запроса и близко MySQLi:

if($mysqli->multi_query($query)) echo "Data successfuly added"; 
$mysqli->close(); 

fgetcsv documentation.

Myqli multiquery documentation

0

Почему бы не просто добавить весь файл, используя MySQL, а не разбивая его на линии? Что-то вроде

LOAD DATA INFILE 'filename.csv' INTO TABLE table FIELDS TERMINATED BY ','; 

или если у вас есть определенные столбцы, которые должны идти в конкретных областях,

LOAD DATA INFILE 'filename.csv' INTO TABLE table FIELDS TERMINATED BY ',' (@c1, @c2) 
set name = @c1, mobile = @c2;