php的错误结果

php的错误结果,php,mysql,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 = mysq

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

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;
    }
私有函数getItems()
{
$this->dbConnect($detailsTable);
mysql\u选择\u数据库(数据库名称);
mysql_查询('SET NAMES utf8');
mysql_查询('SET CHARACTER SET utf8');
$result=mysql\u查询('SELECT*
来自wp_帖子、wp_术语关系、wp_术语分类
其中wp_posts.post_status=“发布”
和wp_term_relationships.object_id=id
和wp_term_taxonomy.taxonomy=“category”
和!(wp_term_taxonomy.term_taxonomy_id=11)
和wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id
按wp_posts.post_date DESC LIMIT 25'(链接)订购;
mysql_close(LINK);
$items='';
而($row=@mysql\u fetch\u array($result))
{
$title=UTFayar($row['post_title']);
$content=UTFayar($row['post_content']);
$items.='
“.日期('D,j M Y H:i:s T',标准时间($row['post_date'))。”
“.$行[“邮政分类”]。”
';
}
$items.='
';
退回$items;
}
问题是有些职位属于3+类。 所以我得到了一个错误的结果,我连续3次以上得到相同的帖子。我需要这篇文章,即使是在一个以上的类别,以显示在我的rss只有一次

艾迪德:

下面是正确的代码,如果有人需要它:

    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;
    }  
私有函数getItems()
{
$this->dbConnect($detailsTable);
mysql\u选择\u数据库(数据库名称);
mysql_查询('SET NAMES utf8');
mysql_查询('SET CHARACTER SET utf8');
//$result=mysql\u query('SELECT*FROM wp\u posts,其中post\u status=“publish”和post\u category!=17,post\u category!=18按post\u date DESC LIMIT 20'排序,链接);
$result=mysql\u查询('选择
身份证件
,职位名称
,post_内容
,邮递日期
,group_concat(通过post_category DESC SEPARATOR“,”)区分post_category顺序)作为“categories”
来自wp_帖子、wp_术语关系、wp_术语分类
其中wp_posts.post_status=“发布”
和wp_term_relationships.object_id=id
和wp_term_taxonomy.taxonomy=“category”
和!(wp_term_taxonomy.term_taxonomy_id=11)
和wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id
按ID分组、帖子标题、帖子内容、帖子日期顺序(按wp\u posts.post\u date DESC LIMIT 25',链接);
mysql_close(LINK);
$items='';
而($row=@mysql\u fetch\u array($result))
{
$title=UTFayar($row['post_title']);
$content=UTFayar($row['post_content']);
$items.='
“.日期('D,j M Y H:i:s T',标准时间($row['post_date'))。”
“.$行['categories']”
';
}
$items.='
';
退回$items;
}  

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

mysql有一个很好的函数叫做“groupconcat”

你的问题是

    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

$detailsTable
是否定义在某个地方?您的帖子没有通用的唯一id吗?看起来你的帖子进入了不同的表(不好),而它们应该都在同一个表中,并有一列描述它们是什么类型的类别。
LINK
是一个常量,指的是MySQL连接,对吗?根据法律,你不应该那样做<代码>可以定义资源常量,但不建议这样做,可能会导致不可预测的行为。是,是,所有内容都已声明。rss工作得很好,只是如果同一篇文章在多个类别中,结果是错误的。谢谢你的建议。关键是,如果帖子属于多个类别,我会得到一个重复的帖子。。在底部,您需要将其从$row['post_category']更改为$row['categories']警告:mysql_query()最多需要2个参数,第65行的D:\database\xampp\htdocs\gen\index.php中给出了3个参数
您通过查询得到了吗?我会检查的,但是我没有你的数据库。。。。GROUP_CONCAT可能需要CapitalizedNo这是不对的,mysql_query()最多需要2个参数,3个参数在。。。你能再发一次代码吗。。。分隔符的单引号放错了(这可能不是问题所在,但文档使用单引号)