2017-07-11 4 views
0

Ich habe ein Problem, dass von meiner SQL-Anweisung. Wenn ich das Ergebnis zurückgebe, wird ein doppeltes Ergebnis (2 gleiche Ergebnisse) angezeigt.Doppeltes Ergebnis von MySql PHP

Das ist mein Code unten:

$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

** WARNUNG **: Wenn Sie PDO verwenden, sollten Sie [vorbereitete Aussagen] (http://php.net/manual/en/pdo.prepared-statements.php) verwenden mit Platzhalterwerten und geben Sie Benutzerdaten als separate Argumente an. In diesem Code haben Sie möglicherweise schwerwiegende [SQL-Injektionsfehler] (http://bobby-tables.com/). Verwenden Sie niemals String-Interpolation oder Verkettung und verwenden Sie stattdessen [prepared statements] (http://php.net/manual/en/pdo.prepared-statements.php) und stellen Sie niemals $ _POST- oder $ _GET-Daten direkt in Ihre Abfrage. In [PHP The Right Way] (http://www.phptherightway.com/) finden Sie Hinweise zu diesem und anderen Problemen. – tadman

+1

Sie haben entweder eine doppelte Zeile in Ihren Daten oder Sie erhalten doppelte Zeilen als Folge Ihrer Joins. Ohne Ihre Daten zu sehen, ist es unmöglich zu sagen. Zerlegen Sie Ihre Abfrage in der MySQL-Workbench oder der MySQL-Konsole in kleinere Teile, bis Sie sehen, welche Beziehung oder Tabelle das Problem ist. – Cfreak

+0

Ich bin neugierig, warum Sie hier extract() verwenden. Es trägt nicht zu Ihrem Problem bei, aber es ist weder notwendig noch hilfreich im Rahmen Ihrer While-Schleife. – Difster

Antwort

0

sein könnte, ich bin falsch, man denke nur, dass.

Erstens:

AND applicantType ='main' - dieses Stück verdächtig erscheint, da es nicht seine Tabelle nicht definiert, und da sollte es für die „unknown column

Zweitens beanstandet werden: ein

Mehr als Ergebnisse werden im Allgemeinen angezeigt, wenn mehr als ein Ergebnis von der von Ihnen angewendeten Abfrage gefunden wird. Ihre Abfrage schließt eine solche Situation nicht aus. Zuerst verwenden Sie SELECT * - es bedeutet alles zu finden. Zweitens verwenden Sie nicht LIMIT, was auch bedeutet, alle zu finden. Verwenden Sie schließlich SELECT DISTINCT, wodurch Duplikate eliminiert werden.

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

auch:

Verwenden var_dump() zu debuggen.

Hoffe, das wird helfen.

0

Dies ist etwas falsch mit der Tabelle, mit einem doppelten Daten. existingbankproducts hat 2 Daten vom gleichen Antragsteller