2017-08-24 8 views
0

私は裁判所テーブルIDを外部キーとして挿入したケースマネージャテーブルを持っています。私は両方のテーブルからレコードをフェッチしたい。ネストされたwhileループを使用すると、1つの行データしか表示されません。whileループでネストされたwhileループを使用して別のテーブルからデータを取得すると、ループが1つしか表示されない

$id = $_SESSION['id']; 
$query1 = "SELECT * from `case_manager` where user_id = '$id' "; 
$result1 = mysqli_query($conn, "$query1"); 
while($row = mysqli_fetch_array($result1, MYSQLI_ASSOC)) { 
    $Status = $row['status']; 
    $id = $row['id']; 
    $case_type = $row['case_type']; 
    $court_id = $row['court_id']; 
    $query2 = "SELECT * from `case_type` where case_id = '$case_type'"; 
    if($result1 = mysqli_query($conn, "$query2")) { 
     while($row2 = mysqli_fetch_array($result1, MYSQLI_ASSOC)) { 
      echo $row2['case_name']; 
     } 
    } 
} 
+0

最初の結果は、2番目の結果によって上書きされます。クエリに 'JOIN'を使用する必要があり、両方のテーブルにリレーションシップが必要です。テーブルが共通のIDまたは関係を持っているかどうかは、簡単にわかります。 – Sand

+0

変数 '$ result1'を上書きしているので、 – JYoThI

答えて

1

あなたは

$id = $_SESSION['id']; 
$query1 ="SELECT * from `case_manager` where user_id = '$id' "; 
$result1 = mysqli_query($conn , "$query1"); 
while ($row = mysqli_fetch_array($result1 ,MYSQLI_ASSOC)) { 
    $Status=$row['status']; 
    $id = $row['id']; 
    $case_type = $row['case_type']; 
    $court_id = $row['court_id']; 
    $query2 ="SELECT * from `case_type` where case_id = '$case_type'"; 
    if($result2 = mysqli_query($conn , "$query2")){; 
    while ($row2 = mysqli_fetch_array($result2 ,MYSQLI_ASSOC)) { 
     echo $row2['case_name']; 
    } 
    } 
} 
+0

助けてくれてありがとうございました。私は、SELECTのcase_manager.id、case_manager.client_contact_number、case_manager.client_email、case_manager.client_name、case_manager.billing_type、case_manager.created_on、case_manager.updated_on、case_manager .status、case_type.case_id、case_type.case_name、court.court_id、court.court_name FROM 'case_manager' INNER JOIN case_type ON case_type.case_id = case_manager.case_type INNER JOIN裁判所については、court.court_id = case_manager.court_id WHERE user_id = 40' –

1

第一試行し$result2に内側のクエリ結果を変更$result1 overwrittingされているので:あなたは2番目のクエリの実行で変数$結果1を上書きしているのでを。

if($result1 = mysqli_query($conn , "$query2")){; 
    ^^^^^^^^         ^^ 

注:そして、その不要なセミコロンを削除します。

第二:ありませんが、複数のクエリ簡単な使用を必要とするには、あなたがあなたのレコードを取得するために、クエリの下に使用することができます

SELECT cm.*,c.* from `case_manager` cm 
join `case_type` c 
on cm.cas_type=c.case_id 
where cm.user_id=$id; 
1

に参加:

$query = SELECT case_manager.* ,case_type.case_name FROM case_manager Left JOIN case_type ON case_manager.case_type=case_type.case_id where case_manger.user_id = $id; 

While($row = mysql_fetch_array()){ 
    echo $row['case_name']; 
} 

希望これはあなたを助けます。

関連する問題