php,function deleteProduct($productId) {, // 连接到数据库, $db = new DB();,, // 删除商品图片记录, $sql = "DELETE FROM " . $ecs->table('goods_album') . " WHERE goods_id = '$productId'";, $db->query($sql);,, // 删除商品描述记录, $sql = "DELETE FROM " . $ecs->table('goods_description') . " WHERE goods_id = '$productId'";, $db->query($sql);,, // 删除商品本身记录, $sql = "DELETE FROM " . $ecs->table('goods') . " WHERE goods_id = '$productId'";, $db->query($sql);,, // 删除商品规格记录, $sql = "DELETE FROM " . $ecs->table('goods_spec') . " WHERE goods_id = '$productId'";, $db->query($sql);,, // 删除商品属性记录, $sql = "DELETE FROM " . $ecs->table('goods_attr') . " WHERE goods_id = '$productId'";, $db->query($sql);,, return true; // 返回操作成功,},
`,,这个示例函数
deleteProduct 接收一个
productId` 参数,然后依次删除与该商品相关的所有记录。这只是一个基本示例,实际应用中可能需要更多的错误处理和日志记录等。函数
函数名称:delete_goods($goods_id)
功能描述:从回收站删除多个商品及其相关记录。
参数说明
参数名 | 类型 | 描述 |
$goods_id | mix | 商品ID列表,可以是逗号分隔的字符串或数组 |
函数步骤详解
1、检查商品ID是否为空:
如果传入的商品ID列表为空,则函数直接返回,不执行任何操作。
```php
if (empty($goods_id)) {
return;
}
```
2、获取有效商品ID:
从数据库中查询有效的商品ID,即那些已被标记为删除状态(is_delete = 1
)的商品。
```php
$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;
}
```
3、删除商品图片和轮播图片文件:
查询需要删除的图片文件路径,并使用unlink
函数删除这些文件。
```php
$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']);
}
}
```
4、删除商品记录:
从goods
表中删除指定的商品记录。
```php
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods') .
" WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
```
5、删除商品的货品记录:
从products
表中删除与指定商品相关的货品记录。
```php
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('products') .
" WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
```
6、删除商品相册的图片文件:
查询需要删除的相册图片文件路径,并使用unlink
函数删除这些文件。
```php
$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']);
}
}
```
7、删除商品相册:
从goods_gallery
表中删除与指定商品相关的相册记录。
```php
$sql = "DELETE FROM " . $GLOBALS['ecs']->table('goods_gallery') . " WHERE goods_id " . db_create_in($goods_id);
$GLOBALS['db']->query($sql);
```
8、删除相关表记录:
从其他相关表中删除与指定商品相关的记录,如收藏、文章、属性、分类等。
```php
$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);
```
相关问题与解答
问题1:为什么在删除商品之前要先获取有效的商品ID?
答案:在删除商品之前获取有效的商品ID是为了确保只删除那些已经被标记为删除状态(is_delete = 1
)的商品,避免误删未被标记为删除状态的商品,这样可以增加操作的安全性和准确性。
问题2:为什么在删除商品的同时还要删除相关的图片文件和其他表中的记录?
答案:在删除商品的同时删除相关的图片文件和其他表中的记录是为了保持数据的一致性和完整性,如果只删除商品记录而不删除相关的图片文件和其他表中的记录,可能会导致数据冗余和不一致,影响系统的性能和稳定性,为了确保系统的整洁和高效运行,需要在删除商品时一并删除相关的所有记录和文件。
到此,以上就是小编对于“ecshop删除商品及记录的函数”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。