[英]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个表( news
, admins
)中选择数据,因此它将第一表的每一行与第二表的每一行连接起来
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.