【问题标题】:php txt file into sqlphp txt 文件转换成 sql
【发布时间】:2014-12-17 21:12:59
【问题描述】:

我想从 TXT 获取信息并将其插入到我的数据库中。

我想创建一个循环,开始将第一行读取到两个空行, 每一行循环都是独立的参数。

当第一行/第一行是“名称”参数时 第二行是街道参数,第三行是城市参数,其余行是文本参数。

请务必注意,并非所有循环的行数都相同,并且每个循环的分隔符是 2 个空行。

<?php

$file = file('try1.txt');  

for ($i = 0; $i < count($file); $i++) {

  $sql = "INSERT INTO `table` (`name`,`street`,`city`,`text`) VALUES ('$name','$street','$city','$text')"; 
        mysql_query($sql);
}
?>

文件: try1.txt

【问题讨论】:

  • 如果你使用mysql函数,为什么你用pdomysqli标记你的问题?无论如何,不​​要这样做,它们已被弃用。
  • @lolka_bolka 你回答了自己。我也会使用 PDO 和 MYSQLI
  • 只需替换其中的制表符即可。

标签: php mysql pdo mysqli


【解决方案1】:

你想要这样的东西吗?

$content = "Name
Street
City
This
is
some
text


Name2
Street2
City2
Something
else
string";

//$content = file_get_contents("try1.txt");
//$link = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");
$string = str_replace("\r", '', $content);
$blocks = explode("\n\n\n", $string);
foreach ($blocks as $block) {
    $lines = explode("\n", $block);
    $name = $city = $street = $text = "";
    if (!empty($lines[0])) {
        $name = $lines[0];
    }
    if (!empty($lines[1])) {
        $street = $lines[1];
    }
    if (!empty($lines[2])) {
        $city = $lines[2];
    }
    if (!empty($lines[3])) {
        for ($i=3; $i < count($lines); $i++) {
            $text .= " " . $lines[$i];
        }
        $text = ltrim($text," ");
    }
    var_dump ($name);
    var_dump ($street);
    var_dump ($city);
    var_dump ($text);
    echo '----------------------------'."<br />";
    /*
    $sql = "INSERT INTO `table` (`name`, `street`, `city`, `text`)"
        . " VALUES ('".mysqli_real_escape_string($link, $name)."',"
        . "'".mysqli_real_escape_string($link, $street)."',"
        . "'".mysqli_real_escape_string($link, $city)."',"
        . "'".mysqli_real_escape_string($link, $text)."')";
    mysqli_query($link, $sql);
     * 
     */
}

输出是

string 'Name' (length=4)
string 'Street' (length=6)
string 'City' (length=4)
string 'This is some text' (length=17)
----------------------------
string 'Name2' (length=5)
string 'Street2' (length=7)
string 'City2' (length=5)
string 'Something else string' (length=21)
----------------------------

注意:
那么你需要做什么:

  • 删除$content 并取消注释该行,file_get_contents 所在的位置。

  • 取消注释$link 行,并设置您的连接参数。

  • 删除 var_dumps 和 echo "-----" 行。

  • 取消注释其余部分。

在本例中,我使用了mysqli 作为程序样式,查看文档以了解PDOmysqli 如何使用它们的OOP 样式。

【讨论】:

  • 文本参数对我来说效果不佳。我认为这是因为 UTF-8(我从希伯来语翻译成英文文本)真正的文本是希伯来语。 ->我添加了一个 txt 文件的活动链接
  • 这与 UTF-8 无关。问题是,你没有两条新线。打开你的文件,看看,第一行的每 2 个新行都有一个 tab 字符。
  • 当我将文件翻译成英文时它可以工作。这就是为什么我说它可能有一个指向 UTF-8 的链接。我可以用原始的txt文件做什么?
  • 将文件中的制表符替换为空。
  • tnx 你是最棒的
【解决方案2】:

创建一个脚本,读取文件并将其存储到带有键的数组中,拥有一个具有e对应列的数据库,创建一个查询"INSERT INTO your_table VALUES ($data['value1'], $data['value2'])";

【讨论】:

  • 我不知道怎么做。请给我看。
猜你喜欢
  • 2021-06-19
  • 1970-01-01
  • 2019-08-29
  • 2016-10-02
  • 2015-12-11
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多