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

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

时间:2011-11-16 07:15来源:未知 作者:好模板 点击:
其实并不能很好的解决问题,因为 goods_number $number 0 这个判断不成立,当 mysql 中goods_number=0时 变态的mysql 执行 goods_number-1的结果是65535,起不到 0-1 =-1 大于

其实并不能很好的解决问题,因为

goods_number $number >0 这个判断不成立,当mysql中goods_number=0时 变态的mysql 执行 goods_number-1的结果是65535,起不到 0-1 =-1 大于0的作用

最后改成这样:

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



解决ecshop后台商品库存突然变成65535的问题才得真正的得到解决

(责任编辑:好模板)
顶一下
(3)
42.9%
踩一下
(4)
57.1%
------分隔线----------------------------