Итак, у меня есть модуль импорта / экспорта для OpenCart, но он стирает всю таблицу параметров продукта перед вставкой новых данных ...
Мне нужно разработать поддержку для стороннего модуля параметров продукта, который у меня есть,но в то же время - я полагаю, что я просто остановил бы удаление важного столбца в моей таблице параметров продукта.
В таблице product_option_value
у меня есть 'product_option,' 'product_id,' 'количествои т. д., и есть один столбец с именем «информация», который я не хочу стереть.Метод ниже:
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";
Спасибо!
Редактировать:
Я попытался предложить Майклу использовать UPDATE
и явно установить их все в NULL ... но это вернуло эту ошибку:
Ошибка: Дублироватьзапись '0' для ключа 1 Ошибка №: 1062 ОБНОВЛЕНИЕ oc_product_option_value
SET product_option_value_id = NULL, product_option_id = NULL, product_id = NULL, количество = NULL, вычитание = NULL, цена = NULL, префикс = NULL, sort_order = NULL, вес =NULL, sku = NULL, image = NULL
Я попытался извлечь первичный ключ:
$ sql. = "ОБНОВЛЕНИЕ ".DB_PREFIX."product_option_value
SET product_option_id = NULL, product_id= NULL, количество = NULL, вычитать = NULL, цена = NULL, префикс = NULL, sort_order = NULL, вес = NULL; \ n ";
, но я получаю:
Ошибка: повторяющаяся запись '1' для ключа 1 Ошибка №: 1062 INSERT INTO `oc_product ....
Редактировать:
Хорошо,поэтому я удалилполе mary_key 'из INSERT ... и я не получил сообщений об ошибках при загрузке.Но когда я просматриваю товар с такими опциями, я получаю это сообщение в верхней части моей страницы:
Примечание: неопределенный индекс: имя в /httpdocs/ocart/catalog/model/catalog/product.phpв строке 418 Примечание: неопределенный индекс: имя в /httpdocs/ocart/catalog/model/catalog/product.php в строке 418Notic .... повторяется