从PHPDatabase中选择数据:类似消息的算法

从PHPDatabase中选择数据:类似消息的算法,php,mysql,Php,Mysql,用户1和2有一个表单 <form action = "" method = "post"> <input type = "text" name = "msg" placeholder = "message..."> <input type = "submit" name = "submit" value = "send"> </form> 将此消息发送到数据库的PHP代码也非常简单: $sql = "INSERT INTO message

用户1和2有一个表单

<form action = "" method = "post">
  <input type = "text" name = "msg" placeholder = "message...">
  <input type = "submit" name = "submit" value = "send">
</form>
将此消息发送到数据库的PHP代码也非常简单:

$sql = "INSERT INTO messages (from, to, message) VALUES ('$userid','$to','$msg')";
$q = mysqli_query($con,$sql);
现在,如果user1发送“Hello User 2!”,它将使用user1的id从表注册到数据库中的
,然后将user2的id注册到
表中的
,对吗?如果user2发送,user2的id将位于
from
中,user1的id位于
to

现在给出这个示例表:(假设其他用户也开始发送消息)

如何仅选择和查看用户1和用户2的对话?
我尝试了
“从消息中选择*,其中FROM,to='user1'和FROM,to='user2'但不知何故不起作用。

尝试下面的查询
假设每个记录的AccID都是唯一的
,我使用了AccID的顺序
,这样就可以按插入顺序获取消息。

另一个选项(为了获得更好的性能):


注意:
from
to
是SQL保留关键字。因此,请避免将它们用作表中的列名称。

相反,尝试使用一些有意义的名称,这些名称不会与任何保留关键字冲突,同时也可以提高可读性,例如,从用户发送,发送给用户。

如果您不知道,您使用的是2个mysql保留字,所以我怀疑你在其网站上发布的插入内容own@Fred-ii-你的意思是什么?请参考参考手册,尝试“从消息中选择*,其中,
from
in('user1','user2')和
to
in('user1','user2');“
from
to
是mysql保留字,解释器可能会混淆它们,因此1)尽量避免mysql保留字作为表/列名2)最好用“`”(而不是“`”)括起这些列名,即使它在没有附件的情况下也可以工作。我是否可以在if语句中使用它?类似于
if(user1 IN('user1','user2')){
user1是值,而不是列名。不能这样使用。当与多个值进行比较时,
中的
是最佳选择。
$sql = "INSERT INTO messages (from, to, message) VALUES ('$userid','$to','$msg')";
$q = mysqli_query($con,$sql);
AccID  |  FROM  |  TO  | MESSAGE 
1         user1   user2    hello user2!
2         user2   user1    hi watsup?
3         user3   user1    hi user1
4         user4   user3    hey user3
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;