2个表选择无法正确显示

时间:2014-06-16 07:28:34

标签: php mysql sql

我只是想从2张桌子中选择,但是我被卡住了。

表1 - 合作伙伴

picture | name | department | company | country | partners_id
--------------------------------------------------------------
img.jpg | John | Developer  | XYZ     | Germany | 140266157291
img.jpg | John | Developer  | XYZ     | Germany | 540266157295

表2 - Partners_social

social_img  |  social_url  |  assign_id  | 
----------------------------------------- 
soc_img.jpg | www.link.com | 140266157291|
soc_img.jpg | www.link.com | 140266157291|
soc_img.jpg | www.link.com | 540266157295|

索引

   $query = mysql_query("SELECT * FROM `partners` ORDER BY `ID` DESC") or die(mysql_error());
    while($part = mysql_fetch_assoc($query)){
        $id = $part['partners_id']; 

         echo'      
        <div class="team"  style="margin-top:20px;">
<div class="left_team"><img src="./admin/images/team/'.$part['picture'].'" class="team_img_circle"  style="border:1px solid #c9c9c9;"></div>
<div class="right_team">
<span><img src="./admin/images/flags/'.$part['flag'].'.png" width="18" height="18" ></span><br>
<span style="font-size:16px; color:#e5007d;">'.$part['department'].'</span><br>
<span style="font-size:22px; color:#000; font-weight:bold;">'.$part['name'].'</span><br>
<span style="font-size:16px; color:#000;">'.$part['company'].'</span><br><br>
 <span class="social_team">
'; 
  $query = mysql_query("SELECT * FROM `partners_social` WHERE `assign_id`= '$id'") or die(mysql_error());
    while($part_soc = mysql_fetch_assoc($query)){    
        if($part_soc['social_url'] == NULL){}
        else{echo '<a href="'.$part_soc['social_url'].'"><img src="./admin/images/social/'.$part_soc['social_img'].'.png"></a>';}
}
echo'  
</span>
</div>
<div class="clearfix"></div>
</div>
';
}

我正在尝试选择2个表,其中第二个表具有与partners_id相同的assign_id。如果我这样做没有第二个查询工作正常,向我展示来自网站 Table1 的两个合作伙伴。但是,如果我尝试使用第二个查询,则始终只向我显示 table1 中的一个合作伙伴。一些解决方案?我正在考虑像 foreach()这样的东西,但不确定。

感谢

2 个答案:

答案 0 :(得分:3)

原因在于你正在使用的第一个循环

$query = mysql_query

第一个查询也使用相同的

$query = mysql_query

所以在第一个循环中,它会重写并且第一个循环只执行一次。

要解决此问题,请为第二个查询提供不同的变量名称

$query1 = mysql_query

答案 1 :(得分:1)

您正在覆盖$ query。在下一轮,它指出了错误的陈述。

但是,你根本不应该这样做。您应该在第一个查询中使用连接,并在一个语句中获取所有信息。