#php #database #csv
#php #База данных #csv
Вопрос:
Я пытаюсь импортировать данные из файла CSV в и вставить их в таблицу базы данных Mysql с помощью PHP-скрипта. До сих пор мне удавалось получить сообщение alert('Import done')
, но я всегда получаю эту ошибку:
Кто-нибудь знает, почему я всегда получаю эту ошибку? Я пытался вставить данные разными способами, но, похоже, они всегда выдают одну и ту же ошибку:
$item1 = mysqli_real_escape_string($conn, $data[1]);
$item1 = mysqli_real_escape_string($conn, $_POST($data[1]));
$item1 = $_POST($data[1]);
Это мой код:
<?php
include('Conexion.php');
if(isset($_POST["submit"]))
{
if($_FILES['file']['name'])
{
$filename = explode(".", $_FILES['file']['name']);
if($filename[1] == 'csv')
{
$handle = fopen($_FILES['file']['tmp_name'], "r");
while($data = fgetcsv($handle))
{
/*$item1 = mysqli_real_escape_string($conn, $data[1]);
$item1 = mysqli_real_escape_string($conn, $_POST($data[1]));*/
$item1 = $_POST($data[1]); /*This is line 15*/
$query = "INSERT INTO excel(title) values('$item1')";
mysqli_query($conn, $query);
}
fclose($handle);
echo "<script>alert('Import done');</script>";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>
<body>
<form method="post" enctype="multipart/form-data">
<div align="center">
<label>Select the CSV:</label>
<input type="file" name="file" />
<input type="submit" name="submit" value="Import" class="btn btn-info" />
</div>
</form>
</body>
</html>
Это моя таблица:
CREATE TABLE excel (
excercise_id int(11) NOT NULL AUTO_INCREMENT,
title text,
PRIMARY KEY (excercise_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ответ №1:
Сколько столбцов у вас в файле?
Но, я думаю, что вы можете попробовать это:
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if (isset($data[1])) {
$item1 = $data[1];
$query = "INSERT INTO excel(title) values('$item1')";
mysqli_query($conn, $query);
}
}
Вы можете проверить первый пример в этой документации : https://www.php.net/manual/fr/function.fgetcsv.php
Комментарии:
1. Спасибо за ваш ответ. Я попробовал, и это выдает мне эту ошибку: Обратите внимание: Неопределенное смещение: 1 в C. В моем файле у меня есть 6 столбцов, но с data [1] я просто правильно получаю первый столбец и вторую строку?
2. Цикл while просматривает все строки файла. Посмотрите на мой пример выше.
3. Он работает с новым кодом, который вы предоставили, по крайней мере, теперь он сохраняет данные в базе данных. Однако он по-прежнему выдает ошибку: Обратите внимание: Неопределенное смещение: 1 в строке $ item1 = $ data [1];
4. Возможно, это потому, что у вас есть пустая строка или строка с пустыми данными. Я предлагаю вам добавить условие isset в ваш цикл while.
5. Спасибо за ответ! Вы мне очень помогли 🙂