$sql="SELECT advertiser_name from broker_blocked_advertisers where pline=".$pLine." AND bid=".$cNr;
 $result=mysqli_query($conn,$sql);
 if(mysqli_num_rows($result)>0){

    while($row=mysqli_fetch_array($result)){
    $s=trim($row['advertiser_name']);
    $sql2= "SELECT clientid from rv_clients where clientname='{$s}'";
    $result2=mysqli_query($dbc,$sql2);

        while($row2=mysqli_fetch_array($result2)){
        $sql3= "SELECT campaignid from rv_campaigns where               clientid=".$row2['clientid'];
        $result3=mysqli_query($dbc,$sql3);

                while($row3=mysqli_fetch_array($result3)){
                $sql4= "SELECT bannerid from rv_banners where campaignid=".$row3['campaignid'];
                $result4=mysqli_query($dbc,$sql4);

                    while($row4=mysqli_fetch_array($result4)){
                    $block_adr[]= $row4['bannerid'];
                     }
                 }
          }
    }
 }


任何人都建议我在单个查询中简化以上代码???
上面的代码确实是我认为的错误方法,请帮助缩短它的时间。

代码说明:在这里,我从sql表中获得一个值,并使用该值前进到另一个查询,依此类推。

提前致谢

最佳答案

修改后的查询和脚本:

$sql = "SELECT d.bannerid
        FROM  broker_blocked_advertisers a
        INNER JOIN rv_clients b ON a.advertiser_name = b.clientname
        INNER JOIN rv_campaigns c ON b.clientid = c.clientid
        INNER JOIN rv_banners d ON c.campaignid = d.ampaignid
        WHERE a.pline=".$pLine." AND a.bid=".$cNr;
$result=mysqli_query($dbc,$sql);

while($row=mysqli_fetch_array($result))
{
    $block_adr[]= $row['bannerid'];
}

10-07 13:29
查看更多