Загрузка и хранение CSV в MySQL DB с использованием переполнения стека

Я пытаюсь создать форму загрузки файла, в которой пользователь может просто загрузить CSV, а затем он анализируется и значения загружаются в базу данных MySQL. Мне уже удалось заставить большую часть моего кода работать. Вот что у меня так далеко:

HTML-код формы загрузки:

<form method="post"enctype="multipart/form-data">
<table>
<tr>
<td>
Filename:
</td>
<td>
<input type="file" name="file" id="file">
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</table>
</form>

PHP-код у меня так далеко:

<?php
if(isset($_POST['submit'])) {
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>";
$a=$_FILES["file"]["tmp_name"];
}

$csv_file = $a;

if (($getfile = fopen($csv_file, "r")) !== FALSE) {
while (($data = fgetcsv($getfile, 1000, ",")) !== FALSE) {

$result = $data;
$str = implode(";", $result);
$slice = explode(";", $str);

$col1 = $slice[0];
$col2 = $slice[1];
$col3 = $slice[2];
$col4 = $slice[3];

$query = "INSERT INTO persons(id, name, email ,contacts) VALUES('".$col1."','".$col2."','".$col3."','".$col4."')";
mysql_query($query);
echo $query;

}
}
echo "File data successfully imported to database!!";
}
?>

Теперь проблема в том, что когда я читаю файл и пытаюсь создать его массив, у меня не получается многомерный массив, чтобы я мог запрашивать построчно. Когда я смотрю в $slice массив выглядит так:

Array
(
[0] => 1
[1] => Jack
[2] => [email protected]
[3] => Bart
2
[4] => Bart
[5] => [email protected]
[6] => John
3
[7] => John
[8] => [email protected]
[9] => Jack
)

Когда я повторяю запрос, который я получаю с помощью этого скрипта, я получаю:

INSERT INTO persons(id, name, email ,contacts) VALUES('1','Jack','[email protected]','Bart 2')

Как я могу это исправить, чтобы получить строку БД для каждой строки в моем CSV? Я надеюсь, что дал достаточно информации, чтобы решить мой вопрос.

0

Решение

Попробуй это,

if (($getfile = fopen($csv_file, "r")) !== FALSE) {
while($data = ! feof($getfile ))   {

$query = "INSERT INTO persons(id, name, email ,contacts) VALUES('".fgetcsv($getfile[0] )."','".fgetcsv($getfile[1])."','".fgetcsv($getfile[2] )."','".fgetcsv($getfile[3] )."')";
mysql_query($query);
echo $query;

}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]