2012-02-04 1 views
1

Привет, я пытаюсь импортировать данные из CSV-файла в таблицу mysql. Ниже приведен сценарий, с которым я работаю. После запуска был выполнен только print_r ($ _ FILES), и он не вставлялся в базу данных.csv в mysql по php

<?php session_start(); ?> 
<?php require('includes/dbconnect.php'); ?> 
<?php require 'includes/header.inc.php'; ?> 

<?php 
    if(isset($_POST['SUBMIT'])) 
    { 
    $fname = $_FILES['csv_file']['name']; //Acquire the name of the file 
    $chk_ext = explode(".",$fname); 

    $filename = $_FILES['csv_file']['tmp_name']; 
    $handle = fopen($filename, "r");  //Open the file for readability 
    while (($data = fgetcsv($handle,1000, ",")) !== FALSE) 
    { 
     $sql = "INSERT into biodata (student_number, fname, lname, level) values('$data[0]','$data[1]','$data[2]')"; 
     mysql_query($sql) or die(mysql_error()); 
    } 
    fclose($handle); 
    echo "Successfully Imported"; 
} 
else 
{ 
    echo "Invalid File"; 
} 

print_r($_FILES) ; 
?> 
+2

Какой из файлов успешно импортирован/недействителен? – Vyktor

+0

Теперь отображается недопустимый файл. –

+0

Ага. Итак, '$ _POST ['SUBMIT']' не установлен? –

ответ

0

У вашего запроса есть проблемы.
Ожидается 4 столбца (как указано в списке столбцов), но вы добавили только 3 столбца.

$sql = "INSERT into biodata (student_number, fname, lname, level) values('$data[0]','$data[1]','$data[2]')"; 
+0

Теперь он показывает недопустимый файл ... –

+0

Это была комбинация нескольких вещей. Сценарий верен. Параметры INSERT и VALUES не были одинаковыми, тогда я «submit» и «SUBMIT» были разными. Но все это сейчас решено. Спасибо за ваше время и терпение ... –

0

Прежде всего, проверьте, был ли открыт файл успешно:

$handle = fopen($filename, "r"); 
if(!$handle){ 
    die('Cannot open file fore reading'); 
} 

Это фактически единственное место, вы не правильно регулировать (надеюсь, что у вас есть сообщения об ошибках включена, потому что это может быть только проблема fgetcsv() и отчет об ошибках будут иметь решающее значение).

+0

Это была комбинация нескольких вещей. Сценарий верен. Параметры INSERT и VALUES не были одинаковыми, тогда я «submit» и «SUBMIT» были разными. Но все это сейчас решено. Спасибо за ваше время и терпение ... –

0

Как только вы выяснили, как получить доступ к загруженному файлу, вы также можете изучить использование LOAD DATA INFILE. Если вы используете ключевое слово LOCAL (LOAD DATA LOCAL INFILE), это должно работать даже на общем хостинге. Для некоторых примеров см.: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Это может быть намного быстрее, чем большое количество INSERT, что особенно важно для больших файлов CSV. Кроме того, он довольно прост в использовании.

Смежные вопросы