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个参数在。。。你能再发一次代码吗。。。分隔符的单引号放错了(这可能不是问题所在,但文档使用单引号)