Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表中提取最新的帖子_Php_Mysql_Max - Fatal编程技术网

Php 从表中提取最新的帖子

Php 从表中提取最新的帖子,php,mysql,max,Php,Mysql,Max,全部, 我试图展示我的作者的最新文章 帖子在一个表中,作者在另一个表中。使用的查询是:连接一个名为content_id的列,我正在尝试使用MAX(item_date),这是文章发布的日期 以下是我正在运行的一些查询和输出,我似乎从所有作者那里获得了除最新帖子以外的所有信息: 首先(这一点正在发挥作用),我们需要获得关于作者的信息: $query="SELECT content_id, title, source_image, url FROM content_detail where appro

全部,

我试图展示我的作者的最新文章

帖子在一个表中,作者在另一个表中。使用的查询是:连接一个名为content_id的列,我正在尝试使用MAX(item_date),这是文章发布的日期

以下是我正在运行的一些查询和输出,我似乎从所有作者那里获得了除最新帖子以外的所有信息:

首先(这一点正在发挥作用),我们需要获得关于作者的信息:

$query="SELECT content_id, title, source_image, url FROM content_detail where approved='y'"; 
$result1 = $mysqli->query($query) or die($mysqli->error.__LINE__); 

// GOING THROUGH THE DATA 
if($result1->num_rows > 0) { 


while($fetch=mysqli_fetch_array($result1)) { 
$title=$fetch['title']; 
$feed_rss=$fetch['url']; 
$content_id=$fetch['content_id']; 
$source_image=$fetch['source_image']; 
在此基础上,让我们获得第1轮的帖子:

$query2 = "SELECT item_id, item_title, MAX(item_date) as item_date from posts WHERE content_id='$content_id' GROUP BY content_id"; 
$result2 = $mysqli->query($query2) or die($mysqli->error.__LINE__); 

if($result2->num_rows > 0) { 

while($rows2=mysqli_fetch_array($result2)) {   

$item_id = $rows2['item_id']; 
$item_title = $rows2['item_title']; 
$item_date = $rows2['item_date'];  `
这将收回一组有趣的结果,即作者文章的最新日期,但不是最新标题

我尝试了按项目标题和内容id分组,但没有成功

以下内容仅返回数据库中具有多个日期的记录,问题是(因为这是新的)一些作者只有一篇文章,这些文章不会显示:

$query2 = "SELECT item_id, item_title, item_date FROM posts AS a WHERE content_id = content_id  AND item_date = ( 
    SELECT MAX(item_date) 
    FROM rssingest AS b 
)  
";
我试过:

ORDER BY DATE DESC LIMIT 1
在我的询问结束时没有任何结果

item_date是表中的日期类型

任何帮助都将不胜感激


谢谢,

您需要将posts表本身加入,以便为每个内容id(我相信是作者)只获取最新的post

这为进一步优化打开了大门。你可以一次抓住作者和他们的最后一篇文章

SELECT content_detail.content_id, 
content_detail.title, 
content_detail.source_image, 
content_detail.url , 
posts.item_id, 
posts.item_title, 
posts.item_date
FROM content_detail 
join posts on content_detail.content_id=posts.content_id
join (select max(item_id) max_id, content_id from posts group by content_id) maxid
on maxid.content_id=posts.content_id and maxid.max_id=posts.item_id
where content_detail.approved='y'

但这可能是夸大其词。当然,您应该自己尝试:)

您正在运行此查询以获取最长日期:

SELECT item_id, item_title, MAX(item_date) as item_date
from posts
WHERE content_id = '$content_id'
GROUP BY content_id;
当然,您没有得到正确的
项目标题
group by
子句中没有提到它,它没有聚合功能。因此,您使用的是MySQL扩展(在其他数据库中,此查询将失败)

您可以使用
子字符串\u index()
/
组\u concat()
技巧获取最新标题:

SELECT max(item_id),
       substring_index(group_concat(item_title separator '|' order by item_date desc), '|', 1) as last_title, 
       MAX(item_date) as item_date
from posts
WHERE content_id = '$content_id'
GROUP BY content_id;
这将返回一行。但是,如果只需要一行,可以执行以下操作:

SELECT p.*
from posts p
WHERE p.content_id = '$content_id'
ORDER BY item_date desc
LIMIT 1;

如果您添加一个
groupby
语句,那么上一个版本将通用化。

为什么不
JOIN
这些表呢?不应该是
按项目的订单_datedesc LIMIT 1
?请查看参数化查询。谢谢,我得到了所需的
SELECT p.*
from posts p
WHERE p.content_id = '$content_id'
ORDER BY item_date desc
LIMIT 1;