A-A+
ecshop删除商品函数记录
摘自ecshop的一个删除商品记录的函数,比较完整的说,其中后台所调用的删除方式都已经有了,如实现的从回收站删除多个商品、取得有效商品ID、删除商品图片和轮播图片文件、删除商品、删除商品的货品记录、删除商品相册的图片文件、删除商品相册、删除相关表记录、删除相应虚拟商品记录、清除缓存,看起来好完整的说,在这里记录下来,待到二次开发的时候可以直接进行实例化应用,当然,如果这个函数不能够满足我们的需求,还可以在函数里面再添加相应的方法,夏日博客摘出来的完整函数代码如下:
/** * 从回收站删除多个商品 * @param mix $goods_id 商品id列表:可以逗号格开,也可以是数组 * @return void */ function delete_goods($goods_id) { if (empty($goods_id)) { return; } /* 取得有效商品id */ $sql = "SELECT DISTINCT goods_id FROM " . $GLOBALS['ecs']->table('goods') . " WHERE goods_id " . db_create_in($goods_id) . " AND is_delete = 1"; $goods_id = $GLOBALS['db']->getCol($sql); if (empty($goods_id)) { return; } /* 删除商品图片和轮播图片文件 */ $sql = "SELECT goods_thumb, goods_img, original_img " . "FROM " . $GLOBALS['ecs']->table('goods') . " WHERE goods_id " . db_create_in($goods_id); $res = $GLOBALS['db']->query($sql); while ($goods = $GLOBALS['db']->fetchRow($res)) { if (!empty($goods['goods_thumb'])) { @unlink('../' . $goods['goods_thumb']); // 节约空间 } if (!empty($goods['goods_img'])) { @unlink('../' . $goods['goods_img']); } if (!empty($goods['original_img'])) { @unlink('../' . $goods['original_img']); } } /* 删除商品 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); /* 删除商品的货品记录 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('products') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); /* 删除商品相册的图片文件 */ $sql = "SELECT img_url, thumb_url, img_original " . "FROM " . $GLOBALS['ecs']->table('goods_gallery') . " WHERE goods_id " . db_create_in($goods_id); $res = $GLOBALS['db']->query($sql); while ($row = $GLOBALS['db']->fetchRow($res)) { if (!empty($row['img_url'])) { @unlink('../' . $row['img_url']); } if (!empty($row['thumb_url'])) { @unlink('../' . $row['thumb_url']); } if (!empty($row['img_original'])) { @unlink('../' . $row['img_original']); } } /* 删除商品相册 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_gallery') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); /* 删除相关表记录 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('collect_goods') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_article') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_attr') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_cat') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('member_price') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('group_goods') . " WHERE parent_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('group_goods') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('link_goods') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('link_goods') . " WHERE link_goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('tag') . " WHERE goods_id " . db_create_in($goods_id); $GLOBALS['db']->query($sql); $sql = "DELETE FROM " . $GLOBALS['ecs']->table('comment') . " WHERE comment_type = 0 AND id_value " . db_create_in($goods_id); $GLOBALS['db']->query($sql); /* 删除相应虚拟商品记录 */ $sql = "DELETE FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE goods_id " . db_create_in($goods_id); if (!$GLOBALS['db']->query($sql, 'SILENT') && $GLOBALS['db']->errno() != 1146) { die($GLOBALS['db']->error()); } /* 清除缓存 */ clear_cache_files(); }