【问题标题】:Import data from a txt file in a MySQL database with PHP on visit访问时使用 PHP 从 MySQL 数据库中的 txt 文件导入数据
【发布时间】:2015-01-20 08:48:43
【问题描述】:

我正在使用 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 脚本,但它似乎无法正常工作..

<?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);
?>

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    每次访问页面时使用"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;
    } 
    

    【讨论】:

    • 好点,但我忘了提到我是 PHP 和 Mysql 的新手。我需要更多指导来完成你的建议!
    • 请看我的问题。我对其进行了编辑,添加了有关我的数据库正在发生的事情的更多信息..
    • 好吧,我没有反馈..空白页..除了初始表格,主要信息为日期、姓名和城市..
    • 抱歉,帮不上忙...您可以检查您的服务器日志或 PHP 日志,看看是否有异常?如果你有 MySQL Workbench 之类的东西,你可以直接对表尝试 SQL。这样,您可以在运行 PHP 脚本之前获得完全正确的 LOAD DATA 语句的语法。
    • 我可以使用 Phpmyadmin 来尝试 SQL 但是,如果我不太了解 PHP,对于 SQL 情况就更糟了。无论如何,我们可以尝试这种方式
    猜你喜欢
    • 2012-11-22
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多