Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Mysqli - Fatal编程技术网

Php 双人聊天室

Php 双人聊天室,php,mysqli,Php,Mysqli,我已经试了两天来让它工作。这是一个两人聊天室:user1和user2可以进入room1。除非是用户1或用户2,否则任何人都不能进入房间1 到目前为止,它只为user1显示room1,但当我从另一个浏览器使用user2时,除非我使用user1,否则它不会显示room1。我希望两个用户都能看到room1。这是我的SQL选择: 对不起,我是MySQL的新手,但基本上我创建了一个登录页面,user1和user2可以在其中输入用户名。一旦他们登录,它将显示room1信息 $sql = "SELECT ro

我已经试了两天来让它工作。这是一个两人聊天室:user1和user2可以进入room1。除非是用户1或用户2,否则任何人都不能进入房间1

到目前为止,它只为user1显示room1,但当我从另一个浏览器使用user2时,除非我使用user1,否则它不会显示room1。我希望两个用户都能看到room1。这是我的SQL选择:

对不起,我是MySQL的新手,但基本上我创建了一个登录页面,user1和user2可以在其中输入用户名。一旦他们登录,它将显示room1信息

$sql = "SELECT room FROM chat WHERE user1='$user1' AND user2='$user2' and room='$room1'";

$result = $conn->query($sql); 
 if ($result->num_rows > 0) { 
  while($row = $result->fetch_assoc()) { 
  $_SESSION['room'] =$row['room'];
 } 
} 

任何帮助都将不胜感激。

由于没有向您提供有关您的需求的详细信息,我假设您需要为两个用户创建一个聊天室,而这两个用户只能参与此聊天室。因此,您不应使用此模式

您需要创建不同实体的不同表 关系

这里有两个实体

使用者 房间 他们之间有一种关系

聊天室 房间\创建房间时插入表格 用户创建时插入用户\u表 在聊天室中指定用户时插入聊天室 现在,对于任何用户,您都可以通过以下方式获得聊天室:

 select id from chat_room where room_id = '$room_id' and user1_id ='$user_id' or user2_id ='$user_id';
希望这能帮助你和其他人。任何人纠正我的地方我都错了

编辑: 消息发送消息时插入 现在,对于任何聊天室,您都可以通过以下方式获取信息:

select message_text from messages where chat_room_id = 'id_you_got_from_above_query';

这将是一个奇怪的表模式。您介意详细说明一下您的聊天室数据库模式吗?我们需要更多的代码,而不仅仅是一些SQL查询。另外,您是否考虑过将允许的用户移动到单独的表中?如果将来您希望允许3个用户加入聊天,会发生什么情况?还是16岁?“你必须继续在你的表中添加列吗?”迈克谢谢你的建议,我只需要两个人。我只需要两个用户都能看到文件室的内容或从文件室列中提取的名称。你知道注释中的代码会丢失所有的换行符、语法突出显示和格式,对吗?试着编辑你的问题,现在你只需要两个人就可以了。从现在起的6个月后,如果您希望在一个聊天室中有两个以上的人,您可能希望SQL中有$user1_id和$user_2_id,因为它们将是不同的用户id。是的,但这里我们为任何用户选择聊天室,然后我们可以获取与此聊天室相关的其他信息,如消息和所有信息。如果我错了,请更正。谢谢Anand,我正在努力完成本教程中的编码,他们所有的聊天日志都保存在一个文本文件中。所以当我的用户1和用户2登录聊天室时,它将提取一个文本文件,如room1.txt chat log.ok,然后您可以将room1作为room name保存在数据库中,为任何用户选择chat_room后,您可以从room_id中获取room_name,然后您可以从该文件中获取聊天记录。由于您是新手,我建议您使用数据库存储聊天记录。。这将很容易。
        id          -user id
        room_id     -room_id//reference of room.id
        user1_id    -user_id//reference of user.id
        user2_id    -user_id//reference of user.id
        created_at  -time of creation
        status      -is this chat room is active or not
        etc 
 select id from chat_room where room_id = '$room_id' and user1_id ='$user_id' or user2_id ='$user_id';
        id              -user id
        chat_room_id    -id of chat room//reference of chat_room.id
        user_id         -user_id//reference of user.id
        message_text         -text message
        created_at      -time of creation
        status          -is this chat room is active or not
        etc 
select message_text from messages where chat_room_id = 'id_you_got_from_above_query';