2017-07-11 62 views
0

我現在遇到的問題是,如果My MySql表中有數據,我將獲得重複的數據。但是,如果我的某個表爲空,則無法顯示所有數據。沒有數據顯示MySql php

這是我下面的代碼:

$stmt = $DB_con->prepare("SELECT * FROM applicantpersonaldetails apd " 
     . "JOIN employementdetails ed ON apd.ApplicantID = ed.ApplicantID " 
     . "JOIN sourceoffunds sof ON apd.ApplicantID = sof.ApplicantID " 
     . "JOIN existingbankproducts ext ON apd.ApplicantID = ext.ApplicantID " 
     . "WHERE apd.AccountID ='{$accountId}' AND applicantType ='joint1';");   

$stmt->execute(); 

if ($stmt->rowCount() > 0) { 
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     extract($row); 

     echo $row['EmploymentStatus']; 
     ?> 
     <?php 
    } 
} else { 
    ?> 
    <div class=""> 
     <div class="alert alert-warning"> 
      <span class="glyphicon glyphicon-info-sign"></span> &nbsp; No Data Found ... 
     </div> 
    </div> 
    <?php 
} 
+0

我認爲你應該閱讀更多關於連接類型,它們之間的區別:https://stackoverflow.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join -and-全加盟 – o0omycomputero0o

回答

2

使用LEFT JOIN如果你希望所有的行,甚至不匹配的:

SELECT * 
FROM applicantpersonaldetails apd LEFT JOIN 
    employementdetails ed 
    ON apd.ApplicantID = ed.ApplicantID LEFT JOIN 
    sourceoffunds sof 
    ON apd.ApplicantID = sof.ApplicantID LEFT JOIN 
    existingbankproducts ext 
    ON apd.ApplicantID = ext.ApplicantID 
WHERE apd.AccountID ='{$accountId}' AND applicantType = 'joint1'; 

注:目前還不清楚applicantType來自哪個表從。如果它不是apd,那麼您可能希望將其包含在適當的ON子句中,而不是WHERE子句中。