|
|
下面就具體說一說怎麽來防止這種錯誤的發生。 1)第一步,主要是對 includes/lib_order.php 文件進行一下二次開發。 先找到下面這段代碼 $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); } /* 處理商品庫存 ecshop模板 */ $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($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 - $abs_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 >= $abs_number , goods_number - $abs_number ,0) ". " WHERE goods_id = '$good_id' LIMIT 1"; $query = $GLOBALS['db']->query($sql); } 2)、接下來還需要修改後臺文件 /admin/order.php, 找到下面代碼,大概在811行左右。 if (!empty($value['product_id'])) { $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('products') . " SET product_number = product_number - " . $value['sums'] . " WHERE product_id = " . $value['product_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); } $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('goods') . " SET goods_number = goods_number - " . $value['sums'] . " WHERE goods_id = " . $value['goods_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); 將之修改為 if (!empty($value['product_id'])) { $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('products') . " SET product_number = if( product_number > $value[sums], product_number -$value[sums],0 ) WHERE product_id = " . $value['product_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); } $minus_stock_sql = "UPDATE " . $GLOBALS['ecs']->table('goods') . " SET goods_number = if ( goods_number > $value[sums], goods_number -$value[sums],0 ) WHERE goods_id = " . $value['goods_id']; $GLOBALS['db']->query($minus_stock_sql, 'SILENT'); 這樣就网站模板OK了。 |
提醒您:
您在"ECSHOP 交流討論區"交流請遵守台灣法律規範,"最模板"
發表的文章《ECSHOP商品库存会突变为65535的异常BUG要如何解决》版權歸屬作者所有,如是轉貼版權歸屬原作者所有.本論壇不對其真實性做任何考證.