php - 使用 PHP 选择并配对两个用户

标签 php mysql

我正在尝试创建一个应用程序,通过从数据库中随机选择两个可用用户,然后使他们不可用(因此无法再次选择他们)来配对两个可用用户。

我想知道如何选择它们然后将它们配对?

我有以下数据库结构。

USERS
| id        | autoincrement, primary key
| user_id   | user's ID
| connected | available, connecting, chatting


ROOMS
| id        | 
| room_name | 
| room_id   | 
| user_id   | first user connected
| user_id2  | second user connected

我不是在创建房间,我只是尝试将用户配对并将他们发送到一个房间。

最佳答案

你的意思是加入记录吗?

你可以这样做:

select * from rooms as r
left outer join users as u on r.user_id=u.id
left outer join users as u2 on r.user_id2=u2.id
where r.id=123

123 = 房间 ID。

编辑:

这是一种用两个随机用户更新房间记录的方法

UPDATE rooms
SET 
user_id=(SELECT id FROM users ORDER BY RAND() LIMIT 0,1),
user_id2=(SELECT id FROM users ORDER BY RAND() LIMIT 0,1),
where id=123

我已经测试过了,它似乎有效。这将使您避免出现重复的用户:

UPDATE rooms
SET 
user_id=(SELECT u1.id FROM users as u1 ORDER BY RAND() LIMIT 0,1),
user_id2=(SELECT u2.id FROM users as u2 where user_id <> u2.id ORDER BY RAND() LIMIT 0,1)
where id=123

关于php - 使用 PHP 选择并配对两个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12720914/

相关文章:

mysql - 使用 FIND_IN_SET 选择记录

PHP 提交后不在下拉列表中显示更新的值

php - MySQLi 准备语句返回 false

mysql从另一个表更新列值

php - 完整的日历事件数据

php - 有没有办法在 PHP 中跟踪垃圾收集器事件?

mysql 加载数据 INFILE 更新

PHP 警告:mysqli::query():无法获取 mysqli

javascript - Ajax不发送数据到php文件

php - 如何包含具有相对路径的文件?