我创建了一个游戏,我一直在一个数据库,我需要的用户能够杀死对方,所以我已经设置了表所示:可变列的预处理语句
...
`alive1` => Player 1's status
`alive2` => Player 2's status
`alive3` => Player 3's status
`alive4` => Player 4's status
...
我需要能够根据每种情况修改数据库中的这些列,并且直接从用户输入。然而,做这样的事情:
$stmt = $link->prepare("UPDATE `games` SET `alive{$_GET["player"]}`=0 WHERE `id`=?")
容易受到SQL注入。有没有一种很好的方法来将列名“绑定”到查询中,以便我可以安全地修改表?
$ _GET [“player”]的正确输入应该只是一个整数1..4,所以我想我可以直接检查输入,如果需要的话,确保它是这四种可能性之一,但我希望能有更优雅的解决方案。这可能会在稍后的另一个项目中再次出现,其中一组可能的投入会更大,并且对每个案例进行硬编码将非常耗时。
任何想法?
我明白了,所以我只会做'if($ id> 0和$ id <5)// do statement'? – David
@MathNerdProductions是的。尽管我会用'$ id> = 1 && $ id <= 4'。 – zerkms
好极了。这有很大帮助。谢谢! – David