Сравнить данные и записать в базу

135
15 июля 2017, 09:04

Делаю файл импорт, для того что бы товары не были с одинаковыми моделями, нужно сделать проверку сравнить с тем что пришло и то что есть.

Не могу понять почему когда я делаю print_r($model); я почему то получаю одно название если записать его в базу $this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . 1 . "', name = '" . $name . "'"); то записей получается столько сколько было и файле импорта, как можно сделать проверку что бы записи не дублировались с одинаковой моделью?

Answer 1

На уникальные поля добавить UNIQUE ключи, а запись в БД делать или с помощью INSERT IGNORE INTO ... (если новые записи надо игнорировать, оставляя более ранние) или с помощью REPLACE IGNORE INTO ... (если свежие должны затирать ранние). И не будет ни дублей, ни исключений при вставке.

Answer 2

Проверку можно сделать дополнительным запросом в БД - есть ли уже такая модель

SELECT product_id FROM ... WHERE product_id = '" . (int)$product_id . "'

или же сделать уникальный ключ на product_id - тогда при добавлении записи в БД будет возбуждаться исключение, которое можно поймать в try catch .

READ ALSO
Не создаются категории товаров в woocommerce

Не создаются категории товаров в woocommerce

Есть плагин, который запускается по расписанию через wp cron и добавляет новые товары в woocommerceОн использует класс WC_API_Products

181
PHP Notice: Undefined index

PHP Notice: Undefined index

Очередная порция ошибок в коде снова сводит с ума

161
Правильно ли реализована задача?

Правильно ли реализована задача?

Здравствуйте, такая задачка для олимпиады:

231
Ошибки в проекте с CMake

Ошибки в проекте с CMake

LinuxПроект kaitai, файлы он сгенерировал, поэтому проблем с хедерами и вообще с кодом быть вроде не должно

216