一次获取2个查询

时间:2013-12-22 21:28:20

标签: php mysql sql fetch

我有2个表,在1个表中有电影中所有剧集的列表,而在另一个表中有来自剧集的流。每一集都有他自己的身份证,所以这些流是通过剧集中的身份证来链接的。

但现在我遇到了一个问题:我想制作一个剧集列表,同时我想插入一个链接到该流。这意味着我必须同时获取2个表,但我不知道如何。这是我的代码

    <?php
include 'connection.php';
$a = (int)$_GET['a'];

if ($result = $con->prepare("SELECT id, ep_nr, ep_title FROM anime_episode WHERE ani_id = $a"))
{
    $result->execute();
    $result->bind_result($eid, $nr, $title);

    while ($result2 = $con->prepare("SELECT * FROM anime_stream WHERE ep_id = $eid"))
    {
        $result2->execute();
        $result2->bind_result($eid, $etitle, $lang, $sname, $link, $uploadedby);

echo '<div id="list-box">';
    echo '<table cellspacing="0">';

while ($result->fetch() && $result2->fetch()) 
    {   
    echo '<tr>';
    echo '<td width="50">' . $nr . '</td>' . '<td>' . $title . '</td>' . '<td>' . $link. '</td>';   
    echo '</tr>';
    }
    echo '</div>';
echo '</table>';
    }
}
$con->close();  
?>

2 个答案:

答案 0 :(得分:1)

正如Strawberry建议的那样,我相信您希望根据外键加入两个表,并选择两个表的内容,例如...

select
  epi.*,
  str.*
from
  anime-episode epi
inner join
  anime-stream str on epi.ani-id = str.epi-id
where 
  epi.ani-id = $id

这假设您的剧集总是至少有一个流,因为当在连接的每个表中找到记录时,内部连接将只返回一行(带有两个表的列)。可以使用左外连接,即使给定剧集不存在流,它仍将返回电影。

在我的平板电脑上找不到下划线!

答案 1 :(得分:0)

这样的查询应该可以解决问题。

SELECT ae.id, ae.ep_nr, ae.ep_title, as.* FROM anime_episode ae 
   LEFT JOIN anime_stream as ON as.ep_id = ae.id 
WHERE ae.ani_id = [$arg]