在 ECShop 中删除商品及其相关记录,通常需要操作数据库和文件系统,以下是一个示例函数,用于删除商品及其相关记录:
function deleteProduct($product_id) { global $db; // 开始事务 $db->trans_start(); // 删除商品图片 $sql = "SELECT goods_image FROM " . DB_PREFIX . "goods WHERE goods_id = '$product_id'"; $result = $db->query($sql); if ($row = $db->fetch_array($result)) { $images = explode(',', $row['goods_image']); foreach ($images as $image) { if (!empty($image)) { @unlink(ROOT_PATH . 'upload/' . $image); // 删除服务器上的图片文件 } } } // 删除商品评论 $sql = "DELETE FROM " . DB_PREFIX . "comment WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品咨询 $sql = "DELETE FROM " . DB_PREFIX . "consultation WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品属性 $sql = "DELETE FROM " . DB_PREFIX . "goods_attr WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品库存记录 $sql = "DELETE FROM " . DB_PREFIX . "goods_storage WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品浏览记录 $sql = "DELETE FROM " . DB_PREFIX . "goods_browse WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品收藏记录 $sql = "DELETE FROM " . DB_PREFIX . "favorites WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品搜索记录 $sql = "DELETE FROM " . DB_PREFIX . "search_words WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品标签关联 $sql = "DELETE FROM " . DB_PREFIX . "goods_tags WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品分类关联 $sql = "DELETE FROM " . DB_PREFIX . "goods_cat WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品品牌关联 $sql = "DELETE FROM " . DB_PREFIX . "goods_brand WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品SKU信息 $sql = "DELETE FROM " . DB_PREFIX . "goods_sku WHERE goods_id = '$product_id'"; $db->query($sql); // 删除商品本身 $sql = "DELETE FROM " . DB_PREFIX . "goods WHERE goods_id = '$product_id'"; $db->query($sql); // 提交事务 $db->trans_commit(); }
注意事项:
1、备份数据:在执行删除操作之前,请确保已经备份了数据库和相关文件,以防误删数据。
2、权限检查:确保调用此函数的用户具有足够的权限来删除商品及相关记录。
3、事务处理:使用事务处理(trans_start
和trans_commit
)以确保所有删除操作要么全部成功,要么全部回滚,以保持数据的一致性。
4、路径配置:确保ROOT_PATH
和DB_PREFIX
等常量正确配置。
5、错误处理:根据实际需求添加错误处理逻辑,以便在删除过程中出现问题时能够及时响应。