无法通过变量减去表值

时间:2013-06-18 00:32:32

标签: php sql

我无法获取SQL更新语句来从表值中减去变量。这是我的代码:

$_SESSION_Job101=mysql_fetch_array(mysql_query("SELECT * FROM job_101 WHERE job_101.username='$_SESSION_User'"));

mysql_query("UPDATE characters SET currenergy=currenergy-$_SESSION_Job101['ecost'] WHERE username='$_SESSION_User'");

$_SESSION_Job101是完全有效的结果,因为我在另一页上从中拉出来;我甚至在所述页面上拉出'ecost'。我还在另一个脚本中以这种方式更新currenergy,除了我使用数字1而不是变量。所以我把它缩小到那个变量。

$_SESSION_Job101是来自第二个表(job_101)的结果,并且该查询正在更新为表字符,这不是无关紧要的吗?

1 个答案:

答案 0 :(得分:0)

我们没有足够的信息,但由于您没有执行任何错误处理或验证返回SQL结果集,因此可能是由以下问题引起的错误:

  • 第一次查询中未返回任何行
  • 其他一些解析问题并不直接明显

我建议您使用临时字符串并回显实际的SQL查询。 继续实际使用MYSQL(通过工作台,查询查看器或控制台)测试它们,以查看错误的位置和内容。

此外,建议不要跳过错误检查,并尝试将这么多行/步骤合并为2行。 想象一下,第一个查询没有返回任何结果,例如......

<强>调试:

$query1 = "SELECT * FROM job_101 WHERE job_101.username='$_SESSION_User'";
echo $query1."<br/>";
$_SESSION_Job101=mysql_fetch_array(mysql_query($query1 ));
$query2 = "UPDATE characters SET currenergy=currenergy-$_SESSION_Job101['ecost'] WHERE username='$_SESSION_User'";
echo $query2."<br/>";
mysql_query($query2);

更新

根据您的评论,我建议您尝试以下两个选项:

1)在-$_SESSION_Job101['ecost']之间添加空格。

2)如果不起作用,请将字符串更改为:

mysql_query("UPDATE characters SET currenergy=currenergy-".$_SESSION_Job101['ecost']." WHERE  username='".$_SESSION_User."'";`