如何阅读父亲并将他的id从txt文件分配给数据库?
问题描述:
所以有我的表例如它的外观:如何阅读父亲并将他的id从txt文件分配给数据库?
ID, Father, Text
1, 0, Text
2, 1, Text1
3, 1, Text2
4, 1, Text3
5, 1, Text4
6, 2, Text5
7, 2, Text6
我的txt文件,例如:
Text3
name1
name2
name3....
只有第一行是从数据库的父亲,它需要它的id传递给孩子的所有其他线。 (我的表是300行,文件少于1000行),孩子不能是父亲。
我要的是,当我插入txt文件数据库得到这样的结果:
ID, Father, Text
1, 0, Text
2, 1, Text1
3, 1, Text2
4, 1, Text3
5, 1, Text4
6, 2, Text5
7, 2, Text6
8, 4, name1
9, 4, name2
10, 4, name3...
有什么办法如何实现这一目标?我读了一些关于嵌套设置的内容,但仍然不知道我该如何做到这一点。
现在我已经在文本文件中输入了父亲给所有的孩子,以便现在有点作品,直到我想如何做,而不必将它们输入到txt文件。
答
给出对数据的评论,然后像这样(未测试)。
打开文件。阅读第一条记录并查找该ID以便与之一起使用。通过文件与父ID插入行的其余部分的读你已经找到
<?php
$mysqli = new mysqli('host','user','pass','db');
$fp = fopen("some_file.txt", "r");
if (($in_line = fgets($fp, 4096)) !== false)
{
$father = trim($in_line);
if ($result = $mysqli->query("SELECT id FROM some_table WHERE `Text` = '".$mysqli->real_escape_string($father)."'", MYSQLI_USE_RESULT))
{
if ($row = $result->fetch_object())
{
$father_id = (int)$row['id'];
while (($in_line = fgets($fp, 4096)) !== false)
{
$child = trim($in_line);
if (!$mysqli->query("INSERT INTO some_table (ID, Father, Text) VALUES(NULL, $father_id, '".$mysqli->real_escape_string($child)."')"))
{
echo "Insert failed";
}
}
}
}
}
fclose($fp);
可以改善这一点(例如,你可以在1个语句许多刀片)的性能,此次荣获”如果父母名称不唯一,则可靠地应对。
您当前的结构不是嵌套集合模型。设置一个嵌套集模型比较困难,插入记录有点痛苦,但它确实使得获取细节变得更容易。
你在这里问过同样的问题,https://stackoverflow.com/q/45233119/1427878请阅读[问]。当你问这里时,你所期待的最低限度是你描述了迄今为止解决问题所做的工作。 – CBroe
那么我的问题得到了解决,我正在寻找树结构,节点,但仍然不知道如何做到这一点。 – David
_“我的问题已经关闭了”_ - 哈哈,所以你就走,“不管怎样,我只是再次发布完全相同的东西”_ ...? _至少_你应该包括你到目前为止所尝试的,在你从另一个问题上得到人们的提示之后。 – CBroe