【发布时间】:2014-04-17 18:30:28
【问题描述】:
这里有另一个 MySQL 问题。我正在尝试根据存储在另一个表中的产品 ID 将 product_qty 减少 -1。在 tbl_basket 中,我有一个名为 product_id 的列,其中包含一个产品 ID,该 ID 也位于位于 tbl_products 的列 product_id 中。我想根据 tbl_basket 中的产品 ID 将 product_qty 减少 -1,其中用户与会话相同。到目前为止,我有:
$purchase = mysql_query("
UPDATE tbl_products a SET a.product_quantity = a.product_quantity -1
WHERE a.product_id IN (SELECT product_id
from tbl_basket WHERE customer_id = '" . $_SESSION['user'] . "'");
这对我不起作用。它不会减少 product_qty。有什么想法吗?谢谢。
这是 Patrick Q 提到的括号问题。
工作查询是:
$purchase = "UPDATE tbl_products a SET a.product_quantity = a.product_quantity -1 WHERE a.product_id IN (SELECT product_id from tbl_basket WHERE customer_id = '" . $_SESSION['user'] . "')";
$debug = mysql_query($purchase) or trigger_error(mysql_error()." ".$purchase);
【问题讨论】:
-
什么不起作用?你有错误吗?查询是否报告任何更新的行?请更具描述性并稍作调试。
-
查询失败,不更新任何内容。
-
失败并显示什么错误消息?你需要调试你的问题!
-
product_quantity的数据类型是什么?当您执行此查询时,它是否返回数据?SELECT product_id from tbl_basket WHERE customer_id = '" . $_SESSION['user'] . "'" -
您肯定会遇到错误。您的括号在错误的位置关闭。除了之后(关闭内部选择,然后关闭函数)之外,您还需要在最后的双引号之前关闭它。