php和mysql中的重复记录

php和mysql中的重复记录,php,css,mysql,Php,Css,Mysql,我将从数据库中列出项目,然而,结果分为两部分。2显示每个记录的结果。目前我在数据库中只有一条记录,但当我在屏幕上显示它们时,它会被重新分区。我不知道为什么会发生这种情况,我试着使用一个计数器,看看循环进行了多少次,结果总是一次。但是,结果会显示两次 守则如下: <section class="container"> <div class="row"> <?php if($bidCollection-

我将从数据库中列出项目,然而,结果分为两部分。2显示每个记录的结果。目前我在数据库中只有一条记录,但当我在屏幕上显示它们时,它会被重新分区。我不知道为什么会发生这种情况,我试着使用一个计数器,看看循环进行了多少次,结果总是一次。但是,结果会显示两次

守则如下:

<section class="container">
    <div class="row">   
            <?php   
            if($bidCollection->selectBidsByStatusAndAppId(BidAccount::OPEN_NEW, $id)){          
                foreach($bidCollection->getBids() as $bid){
                $banker->find($bid->getCustomerId());   
                $counter=0;
            ?>


                         <div class='col-xs-12 bg-more-light-gray bidlist'>

                             <div class="col-xs-12 col-sm-1 col-md-1">

                                <?php 

                                    if(!$uploader->findProfilePicture($banker->data()->_customer_id)){ 
                                         echo "<img src='image/holder.png ' width='50' height='50'  class='img-responsive' />";
                                            }else{
                                         echo "<img src='upload/proPicture/".$uploader->data()->pictureUrl."' width='50' height='50' class='img-responsive'/>";                         
                                    }
                                ?>              

                             </div>









                             <div class="col-xs-12 col-sm-8 col-md-8">
                                <?php
                                    echo '<h2>Agent name :'.$validate->cleanInput($banker->data()->officer_name).'</h2>';
                                    echo '<h3>Institute name : '.$validate->cleanInput($banker->data()->bank_name).' '.++$counter.'</h3>';
                                    if($bid->getApplicationOwnerId() === $customer->data()->_customer_id){
                                                echo "<p>CheckBook: ";
                                                    if($bid->getRequestCheckBook()){echo "Yes";}else{echo "No";}
                                                echo "</p>";
                                                echo"<p> Minimum Deposit: AED ".$bid->getMinDeposit()."</p>";
                                                echo"<p> Direct Debit Card: ";
                                                        if($bid->getRequestCreditCard()){echo "Yes";}else{echo "No";}
                                                echo "</p>";
                                                echo"<p> Other Fees / Arrangement Fees: AED ".$bid->getFees(). "</p>";
                                                echo"<p> Account Will be ready in: ".$bid->getSetupTime() ."</p>";
                                    }
                                ?>          
                            </div>
                            <div class="col-xs-12 col-sm-2 col-md-2">
                                <?php                   
                                $datetime = new DateTime($bid->getDatePosted());
                                $date = $datetime->format('Y-m-d');
                                $time = $datetime->format('H:i:s');
                                    echo '<h4> Date: '.$date.'<br/>Time: '.$time.'</h4>';
                                    echo"<form method='POST' action='viewBanker.php'>";
                                    echo "<input type='hidden' name='banker' value='".$bid->getCustomerId()."'>";
                                    echo "<input type='submit' class ='btn btn-default' name='submit' value='View Profile'>";
                                    echo "</form>";
                                    echo'<br/>';

                                        if($bid->getApplicationOwnerId() === $customer->data()->_customer_id){                      

                                                echo"<form method='post' action='acceptAccountBid.php'>";                   
                                                    echo "<input type='hidden' value='".$bid->getCustomerId()."' name ='bankerId'/>";
                                                    echo "<input type='hidden' value='".$id."' name ='appid'/>";
                                                    echo "<input type='hidden' value='".$bid->getApplicationOwnerId()."' name='ownerId'>";
                                                    echo "<input class='btn btn-default' type='submit' value='Accept Offer' name='submit'>";

                                                echo"</form>";

                                        }

                            ?>                          
                             </div>
                        </div>

            <?php

                }
            }
            ?>
public function selectBidsByStatusAndAppId($status, $appid)
    {
        $sql = "SELECT * FROM accountBid WHERE application_id = :appId AND status = :st";
        try {

            $sth = $this->_db->getConnection()->prepare($sql);
            $sth->bindValue(':appId', $appid);
            $sth->bindValue(':st', $status);
            $sth->execute();

        } catch (Exception $e) {
            $this->setAlert('danger', 'Information Presentation Error: ' . $e->getMessage());   
        }

        foreach ( $sth->fetchAll(PDO::FETCH_ASSOC) as $data) {
           $this->addBid($data);
        }

        return true;
    }



public function addBid($data = null)
    {
        $bid = new BidAccount($data);
        $this->bids[] = $bid; 

    }   


public function getBids()
    {
        return $this->bids;
    } 

首先,我要感谢我的朋友们,他们曾经帮助过我。问题是我有另一个函数,我忘了在这里发布它bidExist()


上面的函数在集合中循环,检查对象在此之前是否存在,如果存在,则不能再添加bid,但是,我忘记了删除此方法上的addBid()函数,这会导致将对象添加到集合中两次。我花了一整晚才弄明白。但我感谢每一位试图支持和帮助我的人

$bidCollection->getBids()
返回什么?在“foreach
”之前,添加
echo“getBids():”。打印($bidCollection->getBids(),true)。“

”;`````让我们知道您得到了什么。您可以将
$bidCollection->getBids()
移动到foreach外部,并将其值放入变量中,以便只调用一次。getBids()返回对象数组。它所做的只是返回一个Bid对象的集合,然后使用foreach提取每个对象并显示它们的内容。这在代码中非常明显。但你每次通过foreach都会打电话。另外,除非您回显它,否则您如何确定它包含什么?print\u r不显示任何内容,但是var\u dump显示记录两次,而Mysql只有一条记录。屏幕上显示的是同一条记录,我不明白是什么导致它循环两次。
public function bidExist( $appId , $id){


        $sql = "SELECT * FROM accountBid WHERE application_id = :appId AND _customer_id = :id";
        try {

            $sth = $this->_db->getConnection()->prepare($sql);
            $sth->bindValue(':appId', $appId);
            $sth->bindValue(':id', $id);
            $sth->execute();

        } catch (Exception $e) {
            $this->setAlert('danger', 'Information Presentation Error: ' . $e->getMessage());   
        }

        foreach ( $sth->fetchAll(PDO::FETCH_ASSOC) as $data) {
           $this->addBid($data);
        }

        return $sth->rowCount();


    }