【发布时间】:2017-07-11 03:34:55
【问题描述】:
我的 SQL 语句有问题。当我回显结果时,会出现重复的结果(2 个相同的结果)。
下面是我的代码:
$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> No Data Found ...
</div>
</div>
<?php
}
?>
【问题讨论】:
-
警告:使用 PDO 时,您应该使用带有占位符值的 prepared statements,并将任何用户数据作为单独的参数提供。在此代码中,您可能有严重的SQL injection bugs。永远不要使用字符串插值或连接,而是使用 prepared statements 并且永远不要将
$_POST或$_GET数据直接放在查询中。有关此问题和其他问题的指导,请参阅 PHP The Right Way。 -
您的数据中有重复的行,或者由于连接而得到重复的行。没有看到你的数据是不可能的。将 MySQL 工作台或 MySQL 控制台中的查询分解成更小的部分,直到您看到问题所在的关系或表。
-
我很好奇你为什么在这里使用 extract()。它不会导致您的问题,但在您的 while 循环范围内没有必要也没有帮助。
标签: php html mysql sql database