$pullItem = mysql_query("SELECT * FROM items WHERE item_id = '$itemid'");
while ($fetch = mysql_fetch_array($pullItem)) {
$statinc = $fetch['statinc'];
}
$pullUserStats = mysql_query("SELECT * FROM userstats WHERE user_id = '$uid'");
while ($fetch = mysql_fetch_array($pullUserStats)) {
$curstat = $fetch[$statinc];
}
mysql_query("UPDATE userstats SET $statinc=('$curstat' + '$incamount') WHERE user_id='$uid'"); //LINE 76
这是我遇到麻烦的地方。我之间有一些编码,但我的错误是这样的: “注意:未定义的变量:第76行的......中的curstat”
答案 0 :(得分:1)
这段代码背后的逻辑存在一些问题,使它看起来似乎没有被编码为看起来像它实际上做的那样,或者它可能没有做你想要它做的事情。
首先,通过编写代码的方式,看起来你想在while
循环中循环遍历一堆结果,当你到达循环结束时,{{ 1}}是查询的最后结果的值。
$statinc
表示您要么拥有一组带有id字段SELECT * FROM items WHERE item_id = '$itemid'
的项目,或者您将可能名为item_id
的内容命名为id
。
如果是第二种情况,那么加载项目的第一个查询应该看起来像:
item_id
这也意味着您的第二个查询应如下所示:
$pullItem = mysql_query("SELECT * FROM items WHERE item_id = '$itemid'");
$item = mysql_fetch_array($pullItem); //There's only one item to be returned, no need to loop over the array over and over again
$statinc = $item['statinc'];
这让我相信userstat正在返回一个空查询,因此在原始代码中,$pullUserStats = mysql_query("SELECT * FROM userstats WHERE user_id = '$uid'");
$userstat = mysql_fetch_array($pullUserStats);
$curstat = $userstat[$statinc];
永远不会被设置。
$curstat
答案 1 :(得分:0)
错误实际上是不言自明的,$curstat
未设置。在while循环中,回显$fetch[$statinc];
的结果以确保它实际返回有效值。如果没有,请检查mysql查询的语法。如果mysql_query没有返回有效的结果集,则while循环甚至可能不会执行,这可以解释为什么$curstat
未设置 。
将来会出现这样的错误,回显查询和任何相关变量,以便您可以在phpMyAdmin中测试它,以确保您生成正确的查询。
尽管我的回答是 - Anther 已经发布了很多关于代码质量的信息,但我必须说 - 建议值得跟进!