我使用PHPMyAdmin运行我的MySQL数据库。
假设我们有这个txt文件" people.txt&#34 ;,一个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脚本,但它似乎无法正常工作..
<?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);
?>
答案 0 :(得分:2)
使用"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;
}