深吸一口气,我真的不知道如何从我的MySQL中组合两个表,我会向你展示我已经组合的表和需要组合的行。
名为post
的表:
正如你所看到的,cat
意味着类别,它是哪个类别(参见下面的类别表nameID
与cat
相同)例如我的页面www.site.com/ Category y.php?NAMEID=NAMEID(表类别)&id=ID(表post)需要组合,所以如果我转到?nameid=1&id8,页面应该是空白的,或者给出一个错误,因为id=8是类别2而不是1。
// 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"].'"/>';
}
}
?>
发布于 2014-03-28 01:12:24
SELECT table1.keyid FROM table1
UNION
SELECT table2.keyid FROM table2
我希望这个例子能帮助你,试着理解如何组合两个表
发布于 2014-03-28 01:15:41
更新:
根据我的理解,下面的代码片段可能会解决你的问题
$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-------------*/
}
}
?>
发布于 2014-03-28 01:40:23
我想我不理解传递categid的必要性,因为post id本身看起来像主键,所以你必须能够获取特定的post记录,并且可以使用类似(你只需要在参数中传递post id )来检索与请求的post链接的类别的名称。
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)
希望这能有所帮助!
谢谢Suresh
https://stackoverflow.com/questions/22694449
复制相似问题