您好我正在尝试在PHP中创建直接邮件收件箱。我尝试进行查询,以获取登录用户与登录用户已发送消息或已将消息发送给登录用户的所有人之间的最新消息。类似于Insatagram和Twitter在其收件箱中显示登录用户与已发送消息或已发送消息的人之间的所有对话列表。
截至目前,我的查询显示了当我只想要登录用户和任何其他用户之间的最新消息时,登录用户与已与之交谈的人之间的所有对话。我希望我已经解释得这么好了。
我现在的查询声明是:
SELECT *
FROM dm
WHERE(receiver="user") or (sender="user")
ORDER BY senttime DESC;
我的直接留言表如下:
CREATE TABLE IF NOT EXISTS dm (
id INT(11) NOT NULL AUTO_INCREMENT,
receiver VARCHAR(100) NOT NULL,
sender VARCHAR(100) NOT NULL,
senttime DATETIME NOT NULL,
message TEXT NOT NULL,
PRIMARY KEY (id)
)
例如:
id receiver sender senttime message
1 Jack Will 2016-07-20 20:59:27 Hi
2 Jack Bob 2016-07-21 20:59:27 What's up
3 Bob Jack 2016-07-22 20:59:27 Hanging out what about
如果Jack是查询中的用户,应返回以下内容
id receiver sender senttime message
3 Bob Jack 2016-07-22 20:59:27 Hanging out what about you?
1 Jack Will 2016-07-20 20:59:27 Hi
答案 0 :(得分:3)
尝试这样的事情(参见sqlfiddle):
id receiver sender senttime message
3 Bob Jack July, 22 2016 20:59:27 Hanging out what about
1 Jack Will July, 20 2016 20:59:27 Hi
输出将是:
CREATE TABLE IF NOT EXISTS dm (
id INT(11) NOT NULL AUTO_INCREMENT,
receiver VARCHAR(100) NOT NULL,
sender VARCHAR(100) NOT NULL,
senttime DATETIME NOT NULL,
message TEXT NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO dm (receiver, sender, senttime, message) VALUES
('Jack', 'Will', '2016-07-20 20:59:27', 'Hi'),
('Jack', 'Bob', '2016-07-21 20:59:27', 'What\'s up'),
('Bob', 'Jack', '2016-07-22 20:59:27', 'Hanging out what about');
运行此代码以创建测试数据:
SELECT val FROM table WHERE pk = ? AND (c1, c2, c3) <= (?, ?, ?)