gpt4 book ai didi

php - 查询仅返回发布后 60 秒内的记录

转载 作者:行者123 更新时间:2023-11-29 04:43:13 25 4
gpt4 key购买 nike

我在这里有一个查询,用于查找用户之间的消息:

SELECT *
FROM msgs
WHERE
(recipientid = '{$_SESSION['rider_id']}' AND authorid = '{$riderid}')
OR
(authorid = '{$_SESSION['rider_id']}' AND recipientid = '{$riderid}')
ORDER BY datesent DESC

现在我有一个 AJAX 调用,它会在实际页面上每 30 秒触发一次以动态发布新消息,我希望它能够抓取发布后 30 秒内发布的所有消息。而且我无法让它工作。我试过这个:

SELECT *
FROM msgs
WHERE
(recipientid = '{$_SESSION['rider_id']}' AND authorid = '{$authorrider['id']}')
OR
(authorid = '{$_SESSION['rider_id']}' AND recipientid = '{$authorrider['id']}')
AND
(datesent >= DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 SECOND))

但它仍然返回所有 消息。不是最近 30 秒内的那些。

我还需要在它被拉取后将状态设置为 1,这样如果有人在 30 秒内做出两次回复,它就不会被拉取和 .prepended () 两次。

因此,一旦我可以获得所需的记录,我就必须运行 SET 查询来设置状态。我的 MySQL 还没有真正完善到知道如何完成此任务。

我刚刚想到的另一种方法是在检索时将状态设置为 1。然后我的 AJAX 查询可以只提取状态 = 0 的记录。

最佳答案

我认为您的问题是 where 子句中缺少括号。试试这个:

SELECT *
FROM msgs
WHERE ((recipientid = '{$_SESSION['rider_id']}' AND authorid = '{$authorrider['id']}') OR
(authorid = '{$_SESSION['rider_id']}' AND recipientid = '{$authorrider['id']}')
) AND
(datesent >= DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 SECOND));

关于php - 查询仅返回发布后 60 秒内的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24185632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com