我有,其中有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的請求。我編輯了我的答案給你提供進一步的信息。 –