Php 从oscommerce中删除非活动产品

Php 从oscommerce中删除非活动产品,php,mysql,sql,Php,Mysql,Sql,我正在使用最新的oscommerce 我有大量的非活动产品。我想删除它们。一次只管理一个是非常慢的 我想,如果我创建一个新的临时类别,并将所有非活动产品移动到此临时类别,然后使用oscommerce的后端,我可以轻松删除它们。这样做还将删除关联的映像 产品通过产品id关联,类别关联由产品到类别表完成。通过products_status=0设置非活动产品 CREATE TABLE IF NOT EXISTS `products` ( `products_id` int(11) NOT NULL

我正在使用最新的oscommerce

我有大量的非活动产品。我想删除它们。一次只管理一个是非常慢的

我想,如果我创建一个新的临时类别,并将所有非活动产品移动到此临时类别,然后使用oscommerce的后端,我可以轻松删除它们。这样做还将删除关联的映像

产品通过产品id关联,类别关联由产品到类别表完成。通过products_status=0设置非活动产品

CREATE TABLE IF NOT EXISTS `products` (
  `products_id` int(11) NOT NULL AUTO_INCREMENT,
  `products_quantity` int(4) NOT NULL,
  `products_model` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `products_ean` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
  `google_product_category` varchar(300) COLLATE utf8_unicode_ci DEFAULT NULL,
  `products_image` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
  `products_price` decimal(15,4) NOT NULL,
  `products_date_added` datetime NOT NULL,
  `products_last_modified` datetime DEFAULT NULL,
  `products_date_available` datetime DEFAULT NULL,
  `products_weight` decimal(5,2) NOT NULL,
  `products_status` tinyint(1) NOT NULL,
  `products_tax_class_id` int(11) NOT NULL,
  `manufacturers_id` int(11) DEFAULT NULL,
  `products_ordered` int(11) NOT NULL DEFAULT '0',
  `products_last_import` datetime DEFAULT NULL,
  `products_submit_google` smallint(6) NOT NULL DEFAULT '1',
  `icecat_prodid` int(10) unsigned NOT NULL,
  `vendors_id` int(11) DEFAULT '1',
  `products_availability` smallint(6) NOT NULL DEFAULT '0',
  PRIMARY KEY (`products_id`),
  KEY `idx_products_model` (`products_model`),
  KEY `idx_products_date_added` (`products_date_added`),
  KEY `idx_icecat_prodid` (`icecat_prodid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=292067 ;


CREATE TABLE IF NOT EXISTS `products_to_categories` (
  `products_id` int(11) NOT NULL,
  `categories_id` int(11) NOT NULL,
  PRIMARY KEY (`products_id`,`categories_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我已尝试使用以下查询,但我得到一个错误#1062-键“PRIMARY”的重复条目“276917-29240”

Update products p ,products_to_categories pc 
set pc.categories_id = 29598 
where p.products_id = pc.products_id  
and p.products_status = 0

您最有可能拥有一个或多个类别中链接的产品

示例:
products\u id
=123的产品ABC可以在
products\u to\u categories
表中存在两次,如果它分为两个类别(例如'categories\u id`222和333)。因此,表中有两个条目,123-222和123-333

运行更新时,当它第一次遇到产品/类别123-222时,它会将其类别更改为123-29598。当它遇到产品/类别123-333时,由于主键约束,它还会尝试将行更新为123-29598,并会导致您看到的问题

也许您可以在脚本中检查产品(123)是否已经存在于类别中,如果已经存在,则删除第二个条目(123-333),而不是将其类别更改为(123-29598)。请参阅