解决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;
}
}
如果文章对您有帮助,就打赏一个吧