用户1和2有一个表单。
<form action = "" method = "post">
<input type = "text" name = "msg" placeholder = "message...">
<input type = "submit" name = "submit" value = "send">
</form>
我的数据库中有这个表:
AccID | FROM | TO | MESSAGE
将此消息发送到数据库的PHP代码也非常简单:
$sql = "INSERT INTO messages (from, to, message) VALUES ('$userid','$to','$msg')";
$q = mysqli_query($con,$sql);
现在,如果user1发送“Hello User 2!”,它将使用user1的id注册到数据库from
表,然后user2的id到to
权限?如果user2发送,则user2的ID将位于from
上的to
和用户1上。
现在给出这个样本表:(假设其他用户也开始发送消息)
AccID | FROM | TO | MESSAGE
1 user1 user2 hello user2!
2 user2 user1 hi watsup?
3 user3 user1 hi user1
4 user4 user3 hey user3
如何选择和查看user1和用户2的对话?
我试过"SELECT * FROM messages WHERE from,to = 'user1' AND from,to = 'user2'";
,但不知何故没用。
答案 0 :(得分:1)
尝试以下查询。 Assuming that AccID is unique
对于每条记录,我使用了ORDER BY AccID
,以便可以按插入顺序获取消息。
SELECT * FROM messages
WHERE (`from` = 'user1' AND `to` = 'user2') OR (`from` = 'user2' AND `to` = 'user1')
ORDER BY AccID;
另一种选择(为了更好的表现):
SELECT * FROM messages
WHERE `from` IN ('user1','user2') AND `to` IN ('user1','user2')
ORDER BY AccID;
注意: from
和to
是SQL保留关键字。所以请避免将它们用作表格中列的名称。
而是尝试使用一些不与任何保留关键字冲突的有意义的名称,并提高可读性,例如sent_from_user,sent_to_user。