解决ecshop后台商品库存为0突然变成65535的问题

更新时间:2014-12-21 点击量:1684

 今天客户突然提出来库存突然变到了65535


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


打开includes\lbi_order.php找到以下代码


 

/**

* 商品库存增与减 货品库存增与减

*

* @param   int    $good_id         商品ID

* @param   int    $product_id      货品ID

* @param   int    $number          增减数量,默认0;

*

* @return  bool               true,成功;false,失败;

*/

function change_goods_storage($good_id, $product_id, $number = 0)

{

    if ($number == 0)

    {

        return true; // 值为0即不做、增减操作,返回true

    }

    if (empty($good_id) || empty($number))

    {

        return false;

    }

    $number = ($number > 0) ? '+ ' . $number : $number;

    /* 处理货品库存 */

    $products_query = true;

    if (!empty($product_id))

    {

        $sql = "UPDATE " . $GLOBALS['ecs']->table('products') ."

                SET product_number = product_number $number

                WHERE goods_id = '$good_id'

                AND product_id = '$product_id'

                LIMIT 1";

        $products_query = $GLOBALS['db']->query($sql);

    }

    /* 处理商品库存 */

    $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') ."

            SET goods_number = goods_number $number

            WHERE goods_id = '$good_id'

            LIMIT 1";

    $query = $GLOBALS['db']->query($sql);

    if ($query && $products_query)

    {

        return true;

    }

    else

    {

        return false;

    }

}

 

替换为以下代码


 

/**

* 商品库存增与减 货品库存增与减

*

* @param   int    $good_id         商品ID

* @param   int    $product_id      货品ID

* @param   int    $number          增减数量,默认0;

*

* @return  bool               true,成功;false,失败;

*/

function change_goods_storage($good_id, $product_id, $number = 0)

{

    if ($number == 0)

    {

        return true; // 值为0即不做、增减操作,返回true

    }

    if (empty($good_id) || empty($number))

    {

        return false;

    }

    

if($number>=0)

{

  /* 处理货品库存 */

  $products_query = true;

  if (!empty($product_id))

  {

   $sql = "UPDATE " . $GLOBALS['ecs']->table('products') ."

     SET product_number = product_number + $number 

     WHERE goods_id = '$good_id'

     AND product_id = '$product_id' LIMIT 1";

   $products_query = $GLOBALS['db']->query($sql);

  }

  /* 处理商品库存 */

  $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') ."

    SET goods_number = goods_number + $number   

    WHERE goods_id = '$good_id' LIMIT 1";

  $query = $GLOBALS['db']->query($sql);

}

else

{

     /* 处理货品库存 */

  $products_query = true;

  $abs_number = abs($number);

  if (!empty($product_id))

  {

   $sql = "UPDATE " . $GLOBALS['ecs']->table('products') ."

     SET product_number = if( product_number >= $abs_number,product_number - $number,0) 

     WHERE goods_id = '$good_id'

     AND product_id = '$product_id' LIMIT 1";

   $products_query = $GLOBALS['db']->query($sql);

  }

  /* 处理商品库存 */

  $sql = "UPDATE " . $GLOBALS['ecs']->table('goods') ."

    SET goods_number = if( goods_number >= $number , goods_number - $number ,0)  

    WHERE goods_id = '$good_id' LIMIT 1";

  $query = $GLOBALS['db']->query($sql);

 

}

    if ($query && $products_query)

    {

        return true;

    }

    else

    {

        return false;

    }

}

支付宝扫码打赏 微信打赏

如果文章对您有帮助,就打赏一个吧

在线客服

客户服务

热线电话:

13128985956 服务时间:

周一到周六:9:00-18:00

在线QQ客服

在线微信客服

关于我们 常见问题

支付方式 加盟合作

提交需求
优惠红包 购物车0 反馈留言 返回顶部