使用多行更新查询

时间:2014-10-18 08:49:12

标签: php mysql sql

我最近创建了一个锦标赛支架,其中就是SQL。

CREATE TABLE `".TABLE_PREFIX."tnybracket` ( 
  `id` int(11) NOT NULL auto_increment, 
  `name` varchar(64) NOT NULL, 
  `gid` int(11) NOT NULL, 
  `tid` int(11) NOT NULL, 
  `round` int(11) NOT NULL, 
  `position` int(11) NOT NULL, 
  `player1` varchar(64) NOT NULL, 
  `player1uid` varchar(64) NOT NULL, 
  `player1gt` varchar(64) NOT NULL, 
  `player2` varchar(64) NOT NULL, 
  `player2uid` varchar(64) NOT NULL, 
  `player2gt` varchar(64) NOT NULL, 
  `winner` varchar(64) NOT NULL, 
  `winneruid` varchar(64) NOT NULL, 
  `winnergt` varchar(64) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

我已将它设置为其中有8个位置从1到8的位置。正如您在此处所见,http://i.gyazo.com/d106e9bac3f4a24f5253a36c498bbedf.png,有8个空行,其中包含正确的位置编号。现在我正在尝试进行更新查询,尝试将成员注册到括号。但是,在更新用户名之前,有几件事需要确定。如果所有player1和player2行对于每一个都是空的,则根据位置将“username”更新为player1。 (因此,如果所有都是空的,由于订单,它将进入位置1)。但是,如果除了位置1中的玩家1之外一切都是空的,那么它需要更新位置1中的玩家2.然后它将继续前进直到所有8个位置按顺序填充。 因此,当用户注册时,我尝试运行此代码:

$sql = 'UPDATE MyBB_tnybracket
        SET player1="$username"
        WHERE round=1';

然而,这显然是不对的。我需要检查玩家1和玩家2是否为空,然后确定要进入哪一个。这是我在完全陷入困境之前所得到的。任何帮助将不胜感激。

编辑: 由于这很令人困惑,我会详细介绍一下。这是表格: http://i.gyazo.com/d106e9bac3f4a24f5253a36c498bbedf.png 这是它在我的网站上的样子 http://i.gyazo.com/19197e2bda98d8ae4cb3438272f6f10b.png

我已经插入了锦标赛所需的所有行,它们只是空白。现在,当会员注册锦标赛时,我需要将他们的用户名插入播放器1或播放器2.例如,如果锦标赛的所有空白行都没有信息(如表中所示),那么该用户的用户名是注册将进入播放器1.但如果另一个人注册(并且没有其他人,只有2个人),那么他的信息将必须进入同一行的播放器2。但是,如果第三个人注册,他将不得不再次进入玩家1的新行。并且周期基本上重新开始,第4个人在新排的Player下。

1 个答案:

答案 0 :(得分:0)

IIWM我将其分为两个表:

游戏:

`id` int(11) NOT NULL auto_increment, 
`name` varchar(64) NOT NULL, 
`gid` int(11) NOT NULL, 
`tid` int(11) NOT NULL, 
`round` int(11) NOT NULL, 
`position` int(11) NOT NULL, 

播放器:

`player` varchar(64) NOT NULL, 
`playeruid` varchar(64) NOT NULL, 
`playergt` varchar(64) NOT NULL,     

然后将玩家添加到'玩家'列出他们注册。你的php会在两者之间进行连接以组成括号游戏。每当你有两个注册游戏时,你就会开始一个新游戏。

这样您就不会受限于初始架构中的8个插槽。