[英]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.