2014-08-13 8 views
0

Я пытаюсь загрузить информацию из файла csv с помощью PHP и хочу сохранить содержимое csv (номера мобильных телефонов) в таблице базы данных mysql. Содержимое файла выглядит так:Загрузка CSV-файла в базу данных mysql с использованием php

содержимого CSV файл (индивидуальная запись в одной строки без запятых)

44762126064  
447508751  
4474669756  
44771466603  
444584871  
445574805  
447455471039  
44777451345 
447460345819  
44793342963  
44734838672  
44752845528  
4474537291  
44779645078 

Я пытаюсь загрузить файл CSV, используя форму и submit.The коду чтения CSV-файл и пытаюсь записать содержимое в тузде table.The проблема в том, что код возвращает все записи csv в одном элементе массива следующим образом:

Array( 
    [0] => 44762126064 447508751 4474669756 44771466603 444584871 445574805 447455471039 44777451345 447460345819 44793342963 44734838672 44752845528 4474537291 44779645078 
); 

и вставка всего массива в виде одной записи, а всего лишь одного номера мобильного телефона в строке в таблице mysql.

Код:

if (isset($_POST['submit'])) { 
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) { 
     echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; 
    echo "<h2>Displaying contents:</h2>"; 
    # readfile($_FILES['filename']['tmp_name']); 
} 

//Import uploaded file to Database 
$handle = fopen($_FILES['filename']['tmp_name'], "r"); 

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 

      $import="INSERT into mobilecsv(phoneMobile,status) values('$data[0]',0)"; 

    mysql_query($import) or die(mysql_error()); 
} 

fclose($handle); 

print "Import done"; 

} 

Я попытался explode(), array_slice() и т.д., но никто из них не помог мне, чтобы разделить это содержимое массива, чтобы сохранить их в виде отдельных записей/телефонных номеров в базе данных MySQL.

Как я могу разделить индивидуальное содержимое первого элемента массива (как в моем случае), чтобы сохранить их как отдельные отдельные записи, появляющиеся в моем CSV? Я новый программист и буду признателен за вашу помощь в этом отношении. Спасибо

+0

вы пытались взорвать (»», $ данных [0])? – Webice

+2

Если ваш файл действительно является единственным значением для каждой строки, тогда нет необходимости в бизнесе fgetcsv(). просто сделайте '$ lines = file ('whatever.csv'); foreach ($ lines as $ line) {insert into db} ' –

+0

@Webice yes Я попытался, но он не работает – user3489398

ответ

0

Проблема заключается в том, что fgetcsv не обнаруживает запятую, которая лежит в основе файла с разделителем COMMA (CSV). Добавьте эту строку в верхней части файла после открытия PHP тега:

ini_set("auto_detect_line_endings", true); 

изменить код импорта в:

//Import uploaded file to Database 
$handle = fopen($_FILES['filename']['tmp_name'], "r"); 
while(($data = fgetcsv($handle)) !== FALSE){ 
$phoneMobile = $line[0]; 

$import="INSERT into mobilecsv(phoneMobile,status) values('$phoneMobile',0)"; 
mysql_query($import) or die(mysql_error()); 
} 

fclose($handle); 

print "Import done"; 

} 
+0

Квадратная скобка рядом с '$ phoneMobile' – Rimble

+1

Спасибо @TomKriek –

+0

Спасибо, Len_D.Это один работал для меня. Мне очень нужны небольшие изменения. Критика :) – user3489398