【问题标题】:Decrease by -1 with Join (PHP, MySQL)使用 Join (PHP, MySQL) 减少 -1
【发布时间】: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'] . "'"
  • 您肯定会遇到错误。您的括号在错误的位置关闭。除了之后(关闭内部选择,然后关闭函数)之外,您还需要在最后的双引号之前关闭它。

标签: php mysql join


【解决方案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'] . "');");

【讨论】:

    【解决方案2】:

    您缺少子查询的括号:

    $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'] . "')");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-18
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      相关资源
      最近更新 更多