需要结合2个表

时间:2014-03-27 17:05:54

标签: php mysql sql

深吸一口气,真的不知道如何结合我的MySQL中的两个表, 我将向您展示我所使用的表格和需要组合的行。

名为post的表格: enter image description here

如您所见cat表示类别,它是哪个类别(请参阅下面的类别表nameID与此处的cat相同) 例如我的网页www.site.com/category.php?nameid=NAMEID(table category)& id = ID(table post)需要合并所以如果我去?nameid = 1& id8页面应该是blanc或者给出错误,因为id = 8是类别2而不是1。

enter image description here     

    // BEGIN OF SHOWING CONTENT PAGE
    if (isset($_GET['id'])){
        $naamID = mysql_real_escape_string($_GET['nameID']);
        $id     = mysql_real_escape_string($_GET['id']);
        $idnext = $id + 1;
        $gn     = (" SELECT * FROM category WHERE nameID='".$naamID."'") or die(mysql_error());
        $go     = (" SELECT * FROM post WHERE id='".$id."'") or die(mysql_error());
        $gnn    = mysql_query($gn) or die(mysql_error());
        $goo    = mysql_query($go) or die(mysql_error());
        $gnnn   = mysql_fetch_array($gnn);
        $gooo   = mysql_fetch_array($goo);


        if(empty($gooo['youtube'])){
        } else {
?>      <h2> <?php echo htmlspecialchars($gooo["title"]); ?> </h2><br />
<?php
        echo '<iframe width="560" height="315" src="//www.youtube.com/embed/'.$gooo["youtube"].'" frameborder="0" allowfullscreen></iframe><br />';

        }

            if(empty($gooo['pic'])){
            } else {
            ?> <h2> <?php echo htmlspecialchars($gooo["title"]); ?> </h2><br /> 
            <?php
            echo '<img src="'.$gooo["pic"].'"/>';
            }
            }
            ?>

3 个答案:

答案 0 :(得分:0)

SELECT table1.keyid FROM table1
UNION
SELECT table2.keyid FROM table2

我希望这个例子可以帮助你,尝试理解如何组合2个表

答案 1 :(得分:0)

<强>更新

根据我的理解,以下代码段可以解决您的问题

$row = mysql_query("SELECT p.cat, c.nameID FROM post p INNER JOIN category c ON p.cat = c.nameID WHERE p.cat = '".$id."' AND c.nameID = '".$naamID."' LIMIT 1");
 if(mysql_num_rows($row)==0)
 {
     echo("This post doesn't exist on this category")
 }

更新2:

<?if (isset($_GET['id']))
{
      $naamID = mysql_real_escape_string($_GET['nameID']);
      $id     = mysql_real_escape_string($_GET['id']);
      $row1 = mysql_query("SELECT p.cat, c.nameID FROM post p INNER JOIN category c ON p.cat = c.nameID WHERE p.cat = '".$id."' AND c.nameID = '".$naamID."' LIMIT 1");
     if(mysql_num_rows($row1)==0)
     {
     echo("This post doesn't exist on this category");
     }
     else
     {          
       $idnext = $id + 1;
       $gn     = (" SELECT * FROM category WHERE nameID='".$naamID."'") or die(mysql_error());
       $go     = (" SELECT * FROM post WHERE id='".$id."'") or die(mysql_error());
       $gnn    = mysql_query($gn) or die(mysql_error());
       $goo    = mysql_query($go) or die(mysql_error());
       $gnnn   = mysql_fetch_array($gnn);
       $gooo   = mysql_fetch_array($goo);

       /*--------------your other display code when data is available-------------*/
      }
}     
?>

答案 2 :(得分:0)

我认为我不理解需要传递Categid,因为post id本身看起来像主键,所以你必须能够获取特定的帖子记录,并且可以检索与所请求的帖子链接的那个类别的名称类似的东西(你只需要在参数中传递post id)

SELECT youtube,title,c.name,pic  FROM post p 
INNER JOIN categories c
ON c.nameid=p.cat
WHERE p.id=2

如果您尝试获取请求的帖子记录以及来自所请求类别的所有帖子,那么您可以编写

之类的查询
  SELECT youtube,title,c.name,pic 
  FROM post 
  INNER JOIN categories c
  ON c.nameid=p.cat
  WHERE (p.id=8 or cat=2)

希望这会有所帮助!

由于 苏雷什