2017-09-16 24 views
-1

所需的結果,我有具有SQL數據庫兩列 1. ID和2 PARENT_ID獲得SQL

我想選擇其中PARENT_ID = 1 [讓結果保存在X數組]然後所有ID, 選擇X []中的parent_id [讓結果保存在Y數組中]的所有ID,然後...做相同的高達7個級別,最後我想對所有級別進行求和並以變量名「數字」得到該總和

我的嘗試:

$sql = "SELECT count(id) as leadersearch FROM `$database`.`$mem` where parent_id = ".$parent[id]; 
$result = mysqli_query($con, $sql); 
$lv1 = mysqli_fetch_array($result); 

然後再

$sql = "SELECT count(id) as leadersearch FROM `$database`.`$mem` where parent_id in ($lv1)"; 
$result = mysqli_query($con, $sql); 
$lv2 = mysqli_fetch_array($result); 

等等....它可以給我需要的結果,但它是太多的代碼... 我想同樣通過循環還是其他什麼東西......縮短代碼。

+2

*「但代碼太多」* - 定義「代碼太多」;我在這裏看不到太多的代碼。 –

+0

@ Fred-ii-我的意思是我必須粘貼相同的三條線7次,但我想要做一個循環 –

+0

Ddin't你已經問過類似這裏https://stackoverflow.com/q/46215054/ –

回答

0

您的第一個查詢獲取count(id),然後第二個查詢使用它來獲取結果。看起來你的需求有很多缺陷。

但是,對於你的問題,你可以使用子查詢類似以下

$sql = "SELECT count(id) as leadersearch 
FROM `$database`.`$mem` 
WHERE parent_id in (
     SELECT id FROM `$database`.`$mem` where parent_id = ".$parent['id']." 
)"; 
$result = mysqli_query($con, $sql); 
$lv2 = mysqli_fetch_array($result); 

如果你有很多級別嵌套和你要搜索這樣的記錄,那麼你可以考慮功能:

function getLeader($parent_id){ 
    $results = []; 
    $sql = "SELECT id as leadersearch FROM `$database`.`$mem` where parent_id in (".$parent_id.")"; 
    $result = mysqli_query($con, $sql); 

    foreach($row = mysqli_fetch_array($result)){ 
     $results[] = $row['id']; 
    } 

    return $results; 
} 

$leaders = []; 
$ids = getLeader($parent['id']); 
foreach($ids as $id){ 
    $leaders[$id] = getLeader($id); 
} 
+0

我說我必須做到這一點高達7級意味着第一個結果,然後用它來獲得第二個結果,然後使用第二個結果獲得第三個結果,然後使用第三個結果獲得第四個結果。我需要去第七個結果...所以我想用循環做 –

+0

@RajanSinghSood。 。我已經更新了我的答案。 。解決了你面臨的問題? –

+0

它工作到2級,但是當我試圖使用$領導的foreach循環['$ id']它說 警告:C:\ xampp \ htdocs \ delta \ admin \ process \ test.php中的非法偏移類型在線32 注意:數組到字符串轉換在第8行的C:\ xampp \ htdocs \ delta \ admin \ process \ test.php中 –