0

我正在一个有类别的网站上工作。当用户单击链接时,它会转到categories.php?id=$id

这是有效的。由于我使用的是 FK,因此我必须使用以下代码:

$result = mysql_query( "SELECT * FROM post_posts, post_cat WHERE post_cat = $id" )
or die("SELECT Error: ".mysql_error());
$num_rows = mysql_num_rows($result);
if ($result) {
    while ($row = mysql_fetch_array($result)) {
        $_SESSION['idpost_posts']=$row['idpost_posts'];

        echo '<div id="single-post" class="slidingDiv">
            <div id="title">' . $row['post_header'] . '</div>
            <div id="image"><img src="' . $row['post_thumb'] . '" width="300" height="200"></div>
            <div id="text">' . substr($row['post_content'], 0, 500) . '<a href="page.php?id=' . $row['idpost_posts'] . '"> Les mer...</a>' . '      </div>
            <div id="author">' . "Skrevet: " . date('j. F Y ', strtotime($row['post_date'])) . ' | <a href="user.php?id=' . $row['idpost_users'] . '">' . $row['user_name'] . '</a></div> 
            <div id="post-divider"></div>
            </div>';
    }    
}

该代码正在运行,但正如我之前所说,它显示同一行 5 次。知道如何解决这个问题吗?

编辑:这是我现在使用的,现在只显示两行,这更好:

$result = mysql_query( "SELECT DISTINCT idpost_posts, post_content, post_header, post_thumb, post_date, idpost_users, user_name FROM post_posts, post_cat, post_users WHERE post_cat = $id" )
        or die("SELECT Error: ".mysql_error());
        $num_rows = mysql_num_rows($result);if ($result) {while ($row = mysql_fetch_array($result)) {
        $_SESSION['idpost_posts']=$row['idpost_posts'];

        echo '<div id="single-post" class="slidingDiv">
            <div id="title">' . $row['post_header'] . '</div>
            <div id="image"><img src="' . $row['post_thumb'] . '" width="300" height="200"></div>
            <div id="text">' . substr($row['post_content'], 0, 500) . '<a href="page.php?id=' . $row['idpost_posts'] . '"> Les mer...</a>' . '      </div>
            <div id="author">' . "Skrevet: " . date('j. F Y ', strtotime($row['post_date'])) . ' | <a href="user.php?id=' . $row['idpost_users'] . '">' . $row['user_name'] . '</a></div> 
            <div id="post-divider"></div>
            </div>';
4

2 回答 2

1

改变这个`

   $result = mysql_query( "SELECT * FROM post_posts, post_cat WHERE post_cat = $id" )

`对此:

$result = mysql_query( "SELECT DISTINCT * FROM post_posts, post_cat WHERE post_cat = $id" )
于 2013-04-05T20:06:39.573 回答
0

您的 SQL "SELECT * FROM post_posts, post_cat WHERE post_cat = $id" 正在 post_posts 和 post_cat 表之间执行交叉笛卡尔连接(您不希望这样做)。您应该像这样定义应该将两个表连接在一起的列。

SELECT * FROM post_posts, post_cat WHERE post_posts.<primary key col name> = post_cat.<foreign key col name> AND post_cat = $id

您将在其中将 <> 替换为定义每个表中的外键关系的列。如果您需要更详细的帮助,您需要发布外键约束详细信息,包括它应用到的列以及它在另一个表中引用的列。

于 2013-04-05T20:27:36.957 回答