我有,其中有ID,parentId的和名称的列保存IDS在一个数组
我想跟踪PARENT_ID高达十级,并将其存储在一个数组“级[]” 有一个SQL表for循环
例如:我有一个id = 100
该id PARENT_ID = 80
ID NO 80具有PARENT_ID = 72 该ID具有PARENT_ID = 64 等等...
这样,我想这些parent_ids在数组名各级[]保存
如果有人需要更多信息PLZ评论
我有,其中有ID,parentId的和名称的列保存IDS在一个数组
我想跟踪PARENT_ID高达十级,并将其存储在一个数组“级[]” 有一个SQL表for循环
例如:我有一个id = 100
该id PARENT_ID = 80
ID NO 80具有PARENT_ID = 72 该ID具有PARENT_ID = 64 等等...
这样,我想这些parent_ids在数组名各级[]保存
如果有人需要更多信息PLZ评论
这将这样的伎俩
$level[0] = $parent_id;
for ($i=0; $i<6; $i++)
{
$j = $i+1;
$search = "SELECT parent_id FROM `$database`.`$mem` where id='$level[$i]'";
$result = mysqli_query($con, $search);
$row = mysqli_fetch_array($result);
$level[$j] = $row['parent_id'];
}
据我了解,你要保存一些数据从数据库中读取的水平阵列
您可以使用PDO与任何风格的获取你想要PDO Fetch All
既然你没有指定你正在使用的有效SQL,我会给你的算法:
getDescendantsOf(id, limit)
result <- id
parent <- <select parent id>
while not (parent is null) and limit > 0
result <- parent + ',' + result
parent <- <select parent id>
limit <- limit - 1
end while
return result
end getDescendantsOf
这不是SQL代码,不要试图执行它。这是一个可以在SQL中实现的算法。
编辑:
这是一个如何创建一个存储MySQL的函数:https://dev.mysql.com/doc/refman/5.7/en/create-procedure.html
这是一个如何在MySQL连接一个VARCHAR到另一个:https://bugs.mysql.com/bug.php?id=7642
这是一个如何使用MySQL中的变量:https://dev.mysql.com/doc/refman/5.7/en/user-variables.html
这是如何在MySQL中使用while循环:https://dev.mysql.com/doc/refman/5.7/en/while.html
这是怎样一个MySQL的存储过程或函数可以从PHP被称为:http://www.devx.com/webdev/Article/42887/0/page/2
所以,你需要实现在MySQL存储功能将包含一个while循环。 while循环的每次迭代都会将先前找到的项目的父项前置到varchar,并且存储的函数将返回一个varchar,其中包含由逗号分隔的族谱。你将需要从PHP调用这个,你会得到这些ID。从那里你可以使用这个字符串,无论你需要它的目的。
您需要使用递归函数来获取所有parent_id
。
$link = mysqli_connect("localhost", "user", "password", "dbname");
function get_all(&$levels, $parent_id = null)
{
global $link;
$sql = "SELECT * FROM table WHERE parent_id " . ($parent_id ? 'IS NULL' : "= $parent_id");
$result = mysqli_query($link, $sql);
if ($result && mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
if ($row['parent_id']) {
$levels[] = $row['parent_id'];
}
get_all($levels, $row['id']);
}
}
}
$levels = [];
get_all($levels);
我不理解一个词,我其实用mysqli的,PHP变量,循环..你可以显示此logrithms使用这些格式 – jolly
@jolly,这是一个算法,而不是对数。对数是一个函数,它可以产生你需要的功率来提高基础以获得参数。这里我们谈论的是一种算法,这是我们计划思考过程发生的方式。你需要在MySQL中实现这个功能,以避免重复发送来自PHP的请求。我编辑了我的答案给你提供进一步的信息。 –