西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > ecshop教程 >

解决ecshop后台商品库存突然变成65535的问题(2)

时间:2011-11-16 07:15来源:未知 作者:好模板 点击:
库存突然变到了65535 产生这个问题的原因是在includes\lib_order.php 中的change_goods_storage有bug /** * 商品库存增与减 货品库存增与减 * * @param int $good_id 商品ID *

库存突然变到了65535

产生这个问题的原因是在includes\lib_order.php 中的change_goods_storage有bug

  1. /**
  2. * 商品库存增与减 货品库存增与减
  3. *
  4. * @param   int    $good_id         商品ID
  5. * @param   int    $product_id      货品ID
  6. * @param   int    $number          增减数量,默认0;
  7. *
  8. * @return  bool               true,成功;false,失败
  9. */
  10. function change_goods_storage($good_id, $product_id, $number = 0)
  11. {
  12.     if ($number == 0)
  13.     {
  14.         return true; // 值为0即不做、增减操作,返回true
  15.     }
  16.     if (empty($good_id) || empty($number))
  17.     {
  18.         return false;
  19.     }
  20.     $number = ($number > 0) ? '+ ' . $number : $number;
  21.     /* 处理货品库存 */
  22.     $products_query = true;
  23.     if (!empty($product_id))
  24.     {
  25.         $sql = "UPDATE " . $GLOBALS['ecs']->table('products') ."
  26.                 SET product_number = product_number $number
  27.                 WHERE goods_id = '$good_id'
  28.                 AND product_id = '$product_id'
  29.                 LIMIT 1";
  30.         $products_query = $GLOBALS['db']->query($sql);
  31.     }
  32.     /* 处理商品库存 */
  33.     $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') ."
  34.             SET goods_number = goods_number $number
  35.             WHERE goods_id = '$good_id'
  36.             LIMIT 1";
  37.     $query = $GLOBALS['db']->query($sql);
  38.     if ($query && $products_query)
  39.     {
  40.         return true;
  41.     }
  42.     else
  43.     {
  44.         return false;
  45.     }
  46. }
复制代码



最开始时候好模板是这样去修复这个bug:

  1.  
  2. /* 处理货品库存 */
  3.     $products_query = true;
  4.     if (!empty($product_id))
  5.     {
  6.         $sql = "UPDATE " . $GLOBALS['ecs']->table('products') ."
  7.                 SET product_number = if( product_number $number>=0,product_number $number,0) 
  8.                 WHERE goods_id = '$good_id'
  9.                 AND product_id = '$product_id' LIMIT 1";
  10.         $products_query = $GLOBALS['db']->query($sql);
  11.     }
  12.     /* 处理商品库存 */
  13.     $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') ."
  14.             SET goods_number = if( goods_number $number >=0, goods_number $number ,0)  
  15.             WHERE goods_id = '$good_id' LIMIT 1";
  16.     $query = $GLOBALS['db']->query($sql);
复制代码

(责任编辑:好模板)

顶一下
(3)
42.9%
踩一下
(4)
57.1%
------分隔线----------------------------