簡體   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