php - php 结果错误

标签 php mysql

我正在运行一个脚本来从数据库中获取一些帖子。 这是脚本:

private function getItems()
    {
        $this->dbConnect($detailsTable);
        mysql_select_db(DB_NAME);
        mysql_query('SET NAMES utf8');
        mysql_query('SET CHARACTER SET utf8');

        $result = mysql_query('SELECT * 
        FROM wp_posts, wp_term_relationships,wp_term_taxonomy 
        WHERE wp_posts.post_status = "publish"  
        AND wp_term_relationships.object_id = id
        AND wp_term_taxonomy.taxonomy= "category"
        AND !(wp_term_taxonomy.term_taxonomy_id = 11)
        AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
        ORDER BY wp_posts.post_date DESC LIMIT 25', LINK);
        mysql_close(LINK);

        $items = '';
        while($row = @mysql_fetch_array($result))
        {
            $title = UTFayar($row['post_title']);
            $content = UTFayar($row['post_content']);

            $items .= '<item id="'.$row["ID"].'">
                <title><![CDATA['.$title.']]></title>
                <description><![CDATA['. $content .']]></description>
                <pubDate>'.date('D, j M Y H:i:s T', strtotime($row['post_date'])).'</pubDate>
                <category>'.$row['post_category'].'</category>
            </item>';
        }
        $items .= '</channel>
                </rss>';

        return $items;
    }

问题是有些帖子属于 3 个以上类别。 所以我得到了错误的结果,我连续收到相同的帖子 3 次以上。我需要这篇文章即使在多个类别中也只在我的 rss 中显示 1 次。

已发布:

这是正确的代码,如果有人需要的话:

    private function getItems()
    {
        $this->dbConnect($detailsTable);
        mysql_select_db(DB_NAME);
        mysql_query('SET NAMES utf8');
        mysql_query('SET CHARACTER SET utf8');
        //$result = mysql_query ('SELECT * FROM wp_posts WHERE post_status="publish" and post_category!=17 and post_category!=18 ORDER BY post_date DESC LIMIT 20', LINK);
        $result = mysql_query('SELECT 

ID
, post_title
, post_content
, post_date
, group_concat(DISTINCT post_category ORDER BY post_category DESC SEPARATOR ", " ) as "categories"

FROM wp_posts, wp_term_relationships,wp_term_taxonomy 
        WHERE wp_posts.post_status = "publish"  
        AND wp_term_relationships.object_id = id
        AND wp_term_taxonomy.taxonomy= "category"
        AND !(wp_term_taxonomy.term_taxonomy_id = 11)
        AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
        GROUP BY ID, post_title, post_content, post_date ORDER BY wp_posts.post_date DESC LIMIT 25', LINK);
        mysql_close(LINK);
        $items = '';
        while($row = @mysql_fetch_array($result))
        {
            $title = UTFayar($row['post_title']);
            $content = UTFayar($row['post_content']);



            $items .= '<item id="'.$row["ID"].'">
                <title><![CDATA['.$title.']]></title>
                <description><![CDATA['. $content .']]></description>
                <pubDate>'.date('D, j M Y H:i:s T', strtotime($row['post_date'])).'</pubDate>
                <category>'.$row['categories'].'</category>
            </item>';
        }
        $items .= '</channel>
                </rss>';

        return $items;
    }  

最佳答案

问题是您需要以某种方式处理类别......将它们卷起来并用逗号将它们显示在列表中可能是处理它的好方法。

mysql 有一个很好的函数,叫做“GROUP_CONCAT”http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

您的查询是

    SELECT 

    ID
    , post_title
    , post_content
    , post_date
    , group_concat(DISTINCT post_category ORDER BY post_category DESC SEPARATOR ', ' ) as `categories`

    FROM wp_posts, wp_term_relationships,wp_term_taxonomy 
            WHERE wp_posts.post_status = "publish"  
            AND wp_term_relationships.object_id = id
            AND wp_term_taxonomy.taxonomy= "category"
            AND !(wp_term_taxonomy.term_taxonomy_id = 11)
            AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
GROUP BY    ID
    , post_title
    , post_content
    , post_date             
ORDER BY wp_posts.post_date DESC

关于php - php 结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895345/

相关文章:

php - 拉拉维尔 4 : how show query results in footer

mysql - 在数据库表中,如何在选择查询后更新查询?

javascript - 如何在 EJS 中获取 MySQL 值作为颜色?

c++ - C++ 中的 mySQL 查询

php - Web 服务器上的 codeigniter 文件夹结构

php - imagerotate 上的 elastic beanstalk linux php GD 库错误

php - preg_replace() 函数问题?

JavaScript 事件不工作

mysql - MySQL 中的高效子查询

php - JSON 数组中的最后一个逗号到 android