Есть такой код на одной из страниц сайта:
if (isset($_GET['seen']) && $uid) {
$seen = explode('|||', $_GET['seen']);
$values = array();
foreach ($seen as $key => $value) {
$value = intval($value);
array_push($values, "($value, $uid)");
}
$DB->query('INSERT INTO ideas_seen (idea_id, user_id) VALUES '.implode(', ', $values));
}
$uid - ID пользователя, $_GET['seen'] - список элементов, которые надо отметить просмотренными. После эти данные используются в запросе в виде:
AND id NOT IN (SELECT idea_id FROM ideas_seen WHERE user_id=$uid)
Проблема в том, что иногда добавляются не все данные, а только часть. Я все никак не могу поймать какую-либо зависимость от чего-либо, никаких ошибок, ничего. В эту таблицу могут добавлять и другие методы, но уникальный индекс там только один (id) и конфликтов на этой почве быть не может.