所以我有一个用于 OpenCart 的导入/导出模块,但它在插入新数据之前会擦除整个产品选项表......
我需要开发对我拥有的第 3 方产品选项模块的支持,但与此同时——我想我会阻止它删除我的产品选项表中的一个重要列。
在product_option_value
表中,我有“product_option”、“product_id”、“quantity”等,并且有一个名为“info”的列我不想擦除。方法如下:
function storeOptionsIntoDatabase( &$database, &$options )
{
// find the default language id
$languageId = $this->getDefaultLanguageId($database);
// start transaction, remove options
$sql = "START TRANSACTION;\n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option`;\n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_description` WHERE language_id=$languageId;\n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value`;\n";
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value_description` WHERE language_id=$languageId;\n";
$this->import( $database, $sql );
...more code...
}
我对 MySQL 不太熟悉,但我想要一些效果:
$sql .= "DELETE FROM `".DB_PREFIX."product_option_value` WHERE column != 'info';\n";
谢谢!
编辑:
我尝试了 Michael 的建议来使用UPDATE
并明确将它们全部设置为 NULL ......但这返回了这个错误:
错误:键 1 的重复条目“0”错误编号:1062 更新
oc_product_option_value
设置 product_option_value_id=NULL,product_option_id=NULL,product_id=NULL,quantity=NULL,subtract=NULL,price=NULL,prefix=NULL,sort_order=NULL,weight=空,sku=空,图像=空
我尝试取出主键:
$sql .= "UPDATE
".DB_PREFIX."product_option_value
SET product_option_id=NULL,product_id=NULL,quantity=NULL,subtract=NULL,price=NULL,prefix=NULL,sort_order=NULL,weight=NULL;\n";
但我得到:
错误:密钥 1 的重复条目“1”错误编号:1062 INSERT INTO `oc_product....
编辑:
好的,所以我从 INSERT 中删除了“primary_key”字段......并且上传时没有收到错误消息。但是,当我查看产品选项的产品时,我会在页面顶部收到以下消息:
注意:未定义索引:第 418 行 /httpdocs/ocart/catalog/model/catalog/product.php 中的名称注意:未定义索引:第 418 行 /httpdocs/ocart/catalog/model/catalog/product.php 中的名称注意... . 它重复