Я использую PHPMyAdmin для запуска моей базы данных MySQL.
Предположим, у нас есть этот txt-файл «people.txt», база данных MySQL и страница PHP, на которой показаны данные из базы данных. Предположим, что данные в текстовом файле хранятся с этим синтаксисом:
2015/16/01|Alex|Paris 2015/13/01|Johnny|Berlin 2015/11/01|Mary|Oslo
Вы можете заметить, что каждое поле разделяется символом |
Есть ли способ импортировать эти данные с помощью PHP-скрипта? Я хочу показать вам другой скрипт, который при посещении страницы отправляет данные в базу данных:
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "my_db"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "INSERT INTO `People` (data, name, city) VALUES ('2015/10/01', 'Will', 'Rome')"; if ($conn->query($sql) === TRUE) { $last_id = $conn->insert_id; echo "OK!"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
Я хочу подражать этому скрипту, чтобы проверить, каждый раз, когда страница посещается, txt-файл. Любая помощь?
Я попытался объединить скрипт PHP, который показывает мои данные, и тот, который импортирует их из файла txt, но он не работает должным образом.
<?php $con=mysqli_connect("localhost","username","","my_db"); // Check connection if (mysqli_connect_errno()) { echo "Failed: " . mysqli_connect_error(); } $sql = " LOAD DATA INFILE 'people.txt' INTO TABLE `People` FIELDS TERMINATED BY '|' "; $result = mysqli_query($con,"SELECT * FROM `People`"); echo "<table class='people'> <tr class='titles'> <th>Data</th> <th>Name</th> <th>City</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['Data'] . "</td>"; echo "<td>" . $row['Name'] . "</td>"; echo "<td>" . $row['City'] . "</td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?>
Используйте инструкцию «LOAD DATA INFILE», чтобы просто загружать данные в таблицу каждый раз, когда страница посещается.
$sql = " LOAD DATA INFILE 'people.txt' INTO TABLE `People` FIELDS TERMINATED BY '|' ";
Одна часть SQL, на которую нужно смотреть, – это опция REPLACE
или IGNORE
, которая определяет, что произойдет, если скрипт попытается вставить строку, которая дублирует существующий уникальный ключ, если в вашей таблице есть какой-либо.
Кроме того, если ваш входной файл имеет поля в другом порядке, чем таблица базы данных, вы можете предоставить список столбцов в конце SQL, например (data, name, city)
.
Помимо этих вещей, я думаю, вы должны просто заменить переменную $sql
в вашем опубликованном коде чем-то вроде вышеуказанного SQL, а затем запустить (как в исходном коде):
if ($conn->query($sql) === TRUE) { echo "OK!"; } else { echo "Error: " . $sql . "<br>" . $conn->error; }