如何为我的附加程序功能改进我的if else语句

时间:2015-11-08 07:41:39

标签: php mysql if-statement

现在我想做一个简单的奴隶游戏买/卖功能。

现在我的数据库:T1, 我的数据是:

+----------+------------+------------+-----------+------------+----------+
| uid      | exp        | lvl        | master    | slaveby    |bytime    |
+----------+------------+------------+-----------+------------+----------+
| 1        | 123        | 1          | 10        | 20         |12345     |
| 20       | 456        | 1          | 1         | 0          |12345     |
| 10       | 111        | 2          | 0         | 1          |12222     |
+------------------------------------------------------------------------+

uid是用户ID。 type int(11)

exp是用户体验。 type int(11)

lvl是用户级别。 type int(11)

master表示用户现在是哪个uid的主人。 type int(11)

slaveby表示用户现在是哪个uid的奴隶。 type int(11)

bytime是用户slaveby的时间。 type int(11)

在表数据中,我们可以知道第1行是用户1是用户10的主人,但也是用户20的奴隶。

现在我的编码就像这样。

if ($_GET['mod'] == 'hireSlave'){
        mysql_query("UPDATE ".DB::table('game_goldwar_labour')." SET touid = '".$_GET['touid']."', bytime = '".$_GET[timestamp]."' WHERE uid = '".$_GET[uid]."'");
        mysql_query("UPDATE ".DB::table('game_goldwar_labour')." SET byuid = '".$_GET[uid]."', bytime = '".$_GET[timestamp]."' WHERE uid = '".$_GET['touid']."'");
};

但是这个用户编码只能是1个用户的主人。

我想改变用户lvl 2,可以是2奴隶的主人,lvl 3,可以是3奴隶的主人,最大5奴隶,还有bytime需要分离。因为我在bytime达到最大时间时设置,所以从属用户将自动失控。如果此从属设备位于第二个插槽中,则将从属第二个插槽更新为0(通常是从属设备的用户ID,但因为已经失控,因此设置为0),之后,当主插槽可供使用时

根据级别提供的插槽,插槽为0.

而且当用户lvl 1时,无法获得2个奴隶。

如果我使用if / else语句,将是一个巨大的脚本。

那么如何改善呢?谢谢。

1 个答案:

答案 0 :(得分:0)

你需要使用一个单独的表来存储奴隶,例如有列uid slave bytime(你也不需要同时存储奴隶和主人,这就是' s多余的)。插入新记录时,请检查主记录级别以确保计数小于从站数量,否则不要插入新记录。如果一个从站一次只能有一个主站,我猜你在slave中需要一个UNIQUE约束。

获取主人的奴隶只需:

SELECT slave FROM slaves WHERE uid = {uid}

为了获取奴隶的主人,只需:

SELECT uid FROM slaves WHERE slave = {slaveid}
编辑:忘了提一件事,你真的应该做一些输入转义和验证,如果你还没有使用像PDO这样的数据库层来避免SQL注入。