我无法获取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)的结果,并且该查询正在更新为表字符,这不是无关紧要的吗?
答案 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."'";`