2017-07-11 9 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/)があります。文字列補間や連結を使用せず、代わりに[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)を使用し、 '$ _POST'や' $ _GET'データをクエリ。この問題やその他の問題については、[PHP The Right Way](http://www.phptherightway.com/)を参照してください。 – tadman

+1

データに重複行があるか、結合の結果重複行が発生します。あなたのデータを見ることなく、伝えることは不可能です。どの関係やテーブルが問題になるかを見るまで、MySQLワークベンチやMySQLコンソールでクエリを分割してください。 – Cfreak

+0

なぜ私がここでextract()を使用しているのか不思議です。それはあなたの問題に貢献していませんが、あなたのwhileループの範囲では必ずしも役立つものではありません。 – Difster

答えて

0

はちょうどそれを考える、私は間違っているM、可能かもしれません。

まず:

AND applicantType ='main' - それはそのテーブルを定義していないとして、この作品は、疑わしいと思われる、と、以来、それは「unknown column

第二のために訴えべきである:1よりも

詳細適用されるクエリによって複数の結果が見つかった場合に結果が表示されます。あなたの質問はそのような状況を全く排除しません。まず、SELECT *を使用します。すべて見つけることを意味します。次に、LIMITは使用しないでください。最後に、重複を排除するSELECT DISTINCTを使用します。また

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

:デバッグに

使用var_dump()

希望、これは役に立ちます。

0

これは、重複したデータを持つ表の問題です。既存の銀行製品に同じ申請者からの2つのデータがある

関連する問題