Возникла такая проблема : как сделать так чтобы в БД при парсинге не добавлялись записи, которые уже есть в БД?
наверно я не правильно изложил суть проблемы существует БД с таблицей с полями уникальный ключ и данные. при 1м парсинге в нее забиваются данные, а вот при 2м парсинге происходит дублирование данных, а мне нужно чтобы добавлялись только новые данные
построй индекс уникальный по тем полям, которые в куче уникальны. и при вставке будет ошибка, а при вставке ignore будет просто проигнорено это дело. так что напихаются в базу только новые данные. вобще это все не от хорошей жизни конечно...
просто при повторном запуске парсинга код начинает проходить ведь с самого начала и соответственно добавляется информация в БД, а т. к. на сайте с которого парсится инфа есть и старая инфа, то она также добавляется в БД и происходит дублирование.
ну вот только когда невозможно наладить нормальные отношения со второй стороной, такие ситуации и возникают.
блин, не пойму как insert ignore прикрутить сюда $this->pdo->query("INSERT IGNORE INTO {$this->table} (`content`) VALUES ('$insert')"); вот вроде прописал insert ignore, а записи все равно дублируются. Может не так прописал?
сработает только если будет конфликт индексов. т.е. должен в таблице быть индекс который будет уникальным для той части данных, что ты впендюриваешь туда. =)
колонка id уникальна а вот колонка с содержимым,которое дублируется не уникально там на id авто инкримент стоит и поэтому он заполняется автоматически и постоянно уникальный, а дублируется текст который в след колонке нужно чтобы проверяло есть ли запись в колонке с текстом такая которая добавляется
так если у записи будут уникальный индекс, то при следующей записи этот индекс буде уже другой и произойдет та же история и,кстати, id итак ведь уникальный
ты странный. тебе пять раз сказано: по тому критерию, по которому ты считаешь должны быть уникальными твои строки, и создай по нему уникальный индекс. после - используй insert ignore. всё.