2013-03-21 3 views
1

Привет, я пытаюсь вставить массив информации в поля в базе данных с помощью выбора флажков, которые у меня есть, отсортированы и вставляются в порядке, но я могу вставить дубликаты, которые не хороши. я использую следующие для вставки элементовКак остановить дубликаты записей в базе данных

$list = $_POST['sub']; 

    // for each loop to insert each value into the database with the selected users informtion 
    foreach ($list as $value) { 

     // The query to run 
     $listQuery='INSERT INTO tbl_list (`userId`, `subId`) VALUES (\'' . $id . '\', \'' . $value . '\')'; 


     // Run the query 
     $objects->query($listQuery); 


    } 

ответ

2

Вы должны добавить уникальный ключ для (userId, subId):

ALTER TABLE tbl_list ADD UNIQUE(`userId`, `subId`) 

Затем вы должны использовать либо INSERT IGNORE или REPLACE INTO, чтобы избежать ошибок при вставке.

+0

Спасибо, что это было решением, которое у меня застряло какое-то время, действительно ценю помощь –

+0

@ChrisBench Рад помочь :) –

+0

@ChrisBench в [другие комментарии] (http://stackoverflow.com/questions/15541235/how- to-stop-duplicate-entries-in-database/15541377 # comment22019651_15541255), вы указали, что в вашей таблице есть 3 поля. Если вы используете этот код как есть - вы, вероятно, заменили свой оригинальный вопрос на другую проблему. Этот ответ отвечает именно на вопрос (+1 кстати) - но похоже, что «вопрос» - это не ваша настоящая проблема. – AD7six

-1

Вы должны сделать две вещи первым сделать свой USERID первичный ключ, а затем попробовать этот запрос
$ listQuery = 'INSERT INTO tbl_list (userId, subId) VALUES (\ '. $ id.' \ ', \' '. $ value.' \ ') при повторном обновлении ключа userId = LAST_INSERT_ID()';

+0

Это объединение стол - делая USERID первичный ключ означает, что у пользователя может быть только одна запись для всех «списков» – AD7six

+0

Но хиры тоже хотят того же. Он не хочет дублировать запись. –

+0

Это одна возможность, но я сомневаюсь. См. Комментарии от OP к другим ответам. – AD7six

0

Вы можете использовать Insert Ignore вместо Insert в MySQL Query

+0

привет, я пробовал этот метод, но без изменений –

0

Для остановки повторяющихся записей в базе данных вы должны сделать это thing.follow шаг за шагом

> 1.set a unique key on the table 

after Complete create unique key you have to decide what you want to do when there's a duplicate 

> 2. ignore it 

> 3.Overwrite the previously entered record 

> Update some counter 
Смежные вопросы