我的IF声明有问题

时间:2015-06-28 17:21:54

标签: php mysql arrays database if-statement

我为我的网页游戏创建了一个简单的代码,没有错误,但代码的某些部分不起作用。不起作用的部件是最后两个if语句,它不会给用户一个反物质,但它打印出正确的消息。为什么它不能正确更新数据库?

CODE:

term

2 个答案:

答案 0 :(得分:0)

我认为您需要更改数据库查询,以便剩余反物质的计算在代码中完成,而不是作为SQL查询的一部分...

$GLOBALS['DATABASE']->query("UPDATE ".USERS." SET `darkmatter` = ". ($USER['antimatter'] - $price) ." WHERE `id` = ".$USER['id']);

请注意,您需要引用$USER['antimatter']变量...我在原始答案中错过了。

基本上,您的原始代码会创建一个如下所示的SQL查询:

UPDATE [Users] SET `darkmatter` = `darkmatter` - [Price] WHERE `id` = [UserId]

它应该是这样的:

UPDATE [Users] SET `darkmatter` = [Cost - Price] WHERE `id` = [UserId]

[方括号]中的位在代码'中处理,例如像$Price这样的变量,像$USER['antimatter'] - $price这样的表达式。

说实话,您应该阅读SQL注入攻击...... https://en.wikipedia.org/wiki/SQL_injection

正如Drew提到的那样,你也把你的号码视为一个字符串...我已经更新了我的答案以反映这一点(并且还删除了分号!)

答案 1 :(得分:0)

也许我理解错误的东西或者你只是把我的想法弄错了,事情就是当我将以下代码应用到我的网站时它什么都不做

$GLOBALS['DATABASE']->query("UPDATE ".USERS." SET `darkmatter` = ". ($USER['antimatter'] - $price) ." WHERE `id` = ".$USER['id']);

$GLOBALS['DATABASE']->query("UPDATE ".USERS." SET `darkmatter` = `darkmatter` - '".$price."' WHERE `id` = ".$USER['id'].";");

这个代码我只是测试它不是最终的代码,我想看看它是否有效,但它不会改变数据库中的任何东西,它只是打印出消息而这就是全部,暗物质没有变化。只有下面的GLOBAL可以使用

$GLOBALS['DATABASE']->query("UPDATE ".USERS." SET `darkbox` = '".$loli."', `antimatter` = `antimatter` - '".$price."' WHERE `id` = ".$USER['id'].";");

我不明白我做错了什么?