基本上我正在尝试制作一个简单的新闻提要,但我现在卡住了,因为我的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>
';
}
}
&GT;
如果你想看看我在说什么:http://freewallpaperblog.com/freshrp/
忽略最后2个(那些是静态html而不是php)
答案 0 :(得分:0)
您要么有3个管理员,要么有3行新闻。您的查询在表之间进行直接乘法运算。尝试“左连接”而不是......
答案 1 :(得分:0)
您的查询从2个表(news
,admins
)中选择数据,因此它将第1个表的每一行与第2个表的每一行连接
SELECT * FROM news, admins
我建议您使用以下查询
SELECT news.*, admins.admin_name FROM news
INNER JOIN admins ON news.admin_id = admins.id
其中admin_id
是您正确的列名
答案 2 :(得分:0)
SELECT * FROM news
INNER JOIN admins ON admins.id = news.adminid
或者新闻表中的任何管理员。
答案 3 :(得分:0)
尝试以下查询:
SELECT
*
FROM
news
Inner join admins on news.admin_id = admins.id
答案 4 :(得分:0)
您的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