2017-07-11 110 views
0

我有一個問題,從我的SQL語句。當我回應結果時,會出現重複結果(2個相同的結果)。MySql的重複結果php

這是我下面的代碼:

$stmt = $DB_con->prepare("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 ='main';");   

$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 
} 
?> 
+1

**警告**:使用PDO時,您應該使用[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)使用佔位符值並提供任何用戶數據作爲單獨的參數。在此代碼中,您可能會遇到嚴重的[SQL注入漏洞](http://bobby-tables.com/)。切勿使用字符串插值或連接,而應使用[準備語句](http://php.net/manual/en/pdo.prepared-statements.php),並且絕對不要將'$ _POST'或'$ _GET'數據直接放入您的查詢。有關此問題和其他問題的指導,請參閱[PHP正確方法](http://www.phptherightway.com/)。 – tadman

+1

您的數據中可能有重複的行,或者由於連接而導致行重複。沒有看到你的數據,這是不可能的。在MySQL工作臺或MySQL控制檯中將您的查詢拆分爲更小的部分,直到您看到哪個關係或表是問題。 – Cfreak

+0

我很好奇你爲什麼在這裏使用extract()。它不會對您的問題造成影響,但在while循環的範圍中沒有必要也沒有幫助。 – Difster

回答

0

可能是,我錯了,只是考慮。

第一:

AND applicantType ='main' - 這片看似可疑,因爲它並沒有定義其表,因爲,它應該抱怨爲「unknown column

二:

不止一個當您應用的查詢找到多個結果時,通常會顯示結果。你的查詢並不排除這種情況。首先,你使用SELECT * - 這意味着找到所有。其次,你不使用LIMIT,這也意味着找到所有。最後,使用SELECT DISTINCT,這樣可以消除重複。

https://dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html

另外:

使用var_dump()調試。

希望,這會有所幫助。

0

這是錯誤的表,與重複的數據。存在的銀行產品有兩個來自同一個申請人的數據