[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запись в таблицу значений при условии что их нет
fresh2012
Привет. Я сам не программист, но есть необходимость вставить небольшой PHP код. Надеюсь на помощь специалистов.
Смысл такой. Есть запрос для вставки значений в таблицу ( Подписка user_id на тему на форуме topic_id)

$db->query("INSERT INTO " . PREFIX . "_forum_subscription (user_id, topic_id) values ('{$member_id['user_id']}', '$topic_id')");

Как сделать, что бы этот запрос выполнялся при условии, что ещё нет в этой таблице такой строки с этими значениями ('{$member_id['user_id']}', '$topic_id') ????
То есть, что бы строки не дублировались. Иначе, просто пропускался.



Спустя 3 минуты, 23 секунды (15.01.2012 - 20:11) inpost написал(а):
Какой бюджет?

Спустя 3 часа, 48 минут, 18 секунд (16.01.2012 - 00:00) alexbel2404 написал(а):
перед инсертом сделать селект нужных полей из таблицы где $member_id['user_id = тому-то и $topic_id = тому-то, потом проверить вернулся ли результат, если нет, то выполняй инсерт.

Спустя 55 минут, 31 секунда (16.01.2012 - 00:55) fresh2012 написал(а):
Какой бюджет - не знаю. Мой знакомый программер, который помагал уехал ненадолго. Но сейчас вот решил немного покопаться в своём форуме. Но знания на уровне среднего html. Но неужели тут сложный код, я так предполагаю в стандартной операции с БД ?

alexbel2404 - да алгоритм я предполагал, что такой, но нужен сам код php.
Я думал, что это стандартная операция, на уровне оператора ( команды ) mysql.
Что бы строки не дублировались.
Но если перед каждым запросом будет постоянно делаться проверка всех строк, то когда будет, например, уже более 5000 ( строк ) подписок - сервер будет вешаться.

Спустя 47 минут, 26 секунд (16.01.2012 - 01:43) Placido написал(а):
Можно определить поля user_id и topic_id как составной ключ, тогда при вставке в таблицу с параметром IGNORE дубли будут просто игнорироваться - то, что вам и надо.
CREATE TABLE `yourtable`(
`a` INT,
`b` INT,
PRIMARY KEY (`a`,`b`)
);

INSERT IGNORE INTO `yourtable` VALUES (1, 2);
INSERT IGNORE INTO `yourtable` VALUES (2, 3);
INSERT IGNORE INTO `yourtable` VALUES (3, 4);
INSERT IGNORE INTO `yourtable` VALUES (3, 4);
INSERT IGNORE INTO `yourtable` VALUES (3, 4);
INSERT IGNORE INTO `yourtable` VALUES (1, 2);
INSERT IGNORE INTO `yourtable` VALUES (1, 2);


SELECT * FROM `yourtable`;

-- Результат:
1, 2
2, 3
3, 4



Спустя 8 часов, 43 минуты, 9 секунд (16.01.2012 - 10:26) fresh2012 написал(а):
ТО есть конкректный PHP код для моего запроса ни кто не напишет здесь?
Я сначала и инете рылся, думал найду готовый пример. Но тоже только теория.
Обработка дубликатов на этапе создания записи

Спустя 16 минут, 54 секунды (16.01.2012 - 10:43) alexbel2404 написал(а):
если почитать другие темы, то с нуля бесплатно тут никто ничего не напишет)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.