在Fetch中使用Variable

时间:2012-07-16 17:57:36

标签: php mysql fetch

$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”

2 个答案:

答案 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 已经发布了很多关于代码质量的信息,但我必须说 - 建议值得跟进!