Я немного застрял здесь и мне нужно немного посоветовать.Я пытаюсь извлечь данные из CSV-файла, а затем отправить его в базу данных MySQL.Моя база данных настроена с 6 полями: сначала id
, который устанавливается как A_I для каждой записи, затем следующие 5 являются просто текстовыми заголовками для данных в моем CSV.
Пример CSV:
Title1, Title2, Title3, Title4, Title5,
Data1, Data2, Data3, Data4, Data5,
Пример базы данных:
ID: 1
Заголовок1: Данные1
Заголовок2: Данные2
Заголовок3: Данные3
Заголовок4: Данные4
Title5: Data5
Так что в идеале я пытаюсь игнорировать первые 5 ,
в CSV, так как они являются просто заголовками, после чего каждый CSV имеет кратное 5 ,
, что являетсязаписи данных.Однако, где я застреваю, я не уверен, как я могу просто получить эти данные и INSERT
их в базу данных SQL, где каждые 5 ,
вводятся под каждым полем в базе данных.Я думаю, что объяснил, что я могу лучше.
Вот как я извлекаю данные из моей базы данных
<html>
<body>
<table>
<tr>Title1</tr>
<tr>Title2</tr>
<tr>Title3</tr>
<tr>Title4</tr>
<tr>Title5</tr>
<?php
include "php/db.php";
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM myTable";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo '<tr>'
.'<td>'.$row["title1"].'</td>'
.'<td>'.$row["title2"].'</td>'
.'<td>'.$row["title3"].'</td>'
.'<td>'.$row["title4"].'</td>'
.'<td>'.$row["title5"].'</td>'
.'</tr>';
}
} else {
echo "0 results";
}
$conn->close();
?>
</table>
</body>
</html>
Просто немного застрял на том, как я могу INSERT
из файла CSV, который уже загружен.
РЕДАКТИРОВАТЬ
Как заявил Карстен Куп в комментариях, попытаться использовать fgetcsv
, который вывел следующие данные:
5 полей в строке 1:
Title1
Title2
Title3
Title4
Title5
5 полей в строке 2:
Данные1
Данные2
Данные3
Данные4
Данные5
Используя следующий код:
$row = 1;
if (($handle = fopen("docs/mycsv1.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
Теперь вопрос заключается в том, как мне сделать INSERT
для моей базы данных с этими данными (учитывая, что некоторые файлы имеют строку 2, 3 или даже 4, но опять у них все еще есть 5 полей?