0

我无法获取 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 而不是变量。所以我把它缩小到那个变量。

第二个表(job_101)的结果并不重要$_SESSION_Job101,并且该查询正在更新为表字符,对吗?

4

1 回答 1

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."'";`
于 2013-06-18T00:42:39.510 回答