Php 如何改进附加程序函数的if-else语句

Php 如何改进附加程序函数的if-else语句,php,mysql,if-statement,Php,Mysql,If Statement,现在我想做一个简单的奴隶游戏买卖功能 现在我的数据库是T1, 我的数据是: +----------+------------+------------+-----------+------------+----------+ | uid | exp | lvl | master | slaveby |bytime | +----------+------------+------------+-----------+------------

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

现在我的数据库是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
是用户体验<代码>类型int(11)

lvl
是用户级<代码>类型int(11)

master
表示现在用户是哪个uid的master<代码>类型int(11)

slaveby
表示现在用户是哪个uid的从属用户<代码>类型int(11)

bytime
是用户
slaveby
的时间<代码>类型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语句,将是一个巨大的脚本


那么如何改进呢?谢谢。

您需要使用一个单独的表来存储从机,例如有列:
uid slave bytime
(您也不需要同时存储slaveby和master,这是多余的)。插入新记录时,请检查主记录的级别,以确保计数小于从属记录的数量,否则不要插入新记录。我猜,如果一个从设备一次只能有一个主设备,那么在从设备中需要一个唯一的约束

要获取主人的奴隶,只需执行以下操作:

SELECT slave FROM slaves WHERE uid = {uid}
SELECT uid FROM slaves WHERE slave = {slaveid}
要获取从属主机,只需执行以下操作:

SELECT slave FROM slaves WHERE uid = {uid}
SELECT uid FROM slaves WHERE slave = {slaveid}

编辑:忘了提一件事,如果还没有,你真的应该做一些输入转义和验证,并使用像PDO这样的DB层来避免SQL注入。

Google SQL注入,永远不要接受用户能够提供的数据。另外,mysql_query在php7中被弃用和删除。谢谢,这是一个很好的解决方案,我已经做了DB层和intval/htmlspeciachar,所有这些都是为了避免注入,tq。