Использование CSV для публикации данных в базу данных MySQL PHP - PullRequest
0 голосов
/ 29 мая 2018

Я немного застрял здесь и мне нужно немного посоветовать.Я пытаюсь извлечь данные из 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 полей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...