访问时使用PHP从MySQL数据库中的txt文件导入数据

时间:2015-01-15 23:59:33

标签: php mysql

我使用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);
?>

1 个答案:

答案 0 :(得分:2)

使用"LOAD DATA INFILE"语句只在每次访问页面时将数据加载到表中。

$sql = "
    LOAD DATA INFILE 'people.txt'
    INTO TABLE `People`
    FIELDS TERMINATED BY '|'
";

要查看的SQL的一部分是REPLACEIGNORE选项,它确定如果脚本尝试插入复制现有唯一键的行,如果您的表有任何

此外,如果输入文件的字段顺序与数据库表的顺序不同,则可以在SQL末尾提供列表,如(data, name, city)

除了这些之外,我认为您应该只需使用上述SQL替换已发布代码中的$sql变量,然后运行(如原始代码中所示):

if ($conn->query($sql) === TRUE) {
    echo "OK!";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}