繁体   English   中英

While循环显示结果3次

[英]While loop displaying result 3 times

基本上,我试图制作一个简单的新闻提要,但是由于我的while循环将结果显示3次,因此我被卡住了,这是为什么? :/

<?php 
$sql ="SELECT
            *
        FROM
            news,
            admins";
$result = mysql_query($sql);

if(!$result)
{
    echo 'Error while selecting from database. Please contact the administration team';
} else {
    while($row = mysql_fetch_assoc($result))
    {
        echo '
        <div class="content_news">
            <h1>' . $row['news_name'] . '</h1>
            <p style="font-size:12px;">Posted by <b>' . $row['admin_name'] . '</b> on ' . $row['news_date'] . '
            <p>' . $row['news_description'] . '</p>
            <a href="' . $row['news_link'] . '">read more</a>
        </div>
        ';
    }
}

?>

如果您想了解我在说什么: http : //freewallpaperblog.com/freshrp/

忽略最后2个(那些是静态html而不是php)

您要么拥有3个管理员,要么拥有3行新闻。 您的查询使表之间直接相乘。 尝试“左加入” ...

您的查询从2个表( newsadmins )中选择数据,因此它将第一表的每一行与第二表的每一行连接起来

SELECT * FROM news, admins

我建议您使用以下查询

SELECT news.*, admins.admin_name FROM news
INNER JOIN admins ON news.admin_id = admins.id

其中admin_id是您正确的列名

SELECT * FROM news
INNER JOIN admins ON admins.id = news.adminid

或新闻表中的任何adminid。

请尝试以下查询:

 SELECT
                *
            FROM
                news
    Inner join admins on news.admin_id = admins.id

您在SQL中未执行JOIN语句,因为其他人已经在您的问题中进行了评论。 如果您发布要获取的关联字段会有所帮助,但是根据您的$ row键,我的最佳猜测是以下内容对您有用(但是如果不知道数据库的设计,我无法保证会做到这一点,我只能从变量名推断):

$sql = "SELECT news.name, news.date, news.description, news.link, admins.name"
. "FROM news"
. "INNER JOIN admins"
. "ON news.name=admins.name"

参考文献:

http://www.w3schools.com/sql/sql_join_inner.asp

http://www.w3schools.com/sql/sql_join_left.asp

http://dev.mysql.com/doc/refman/5.0/en/join.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM