Как проверить для поля на наличие их в дб?

Здравствуйте.

Что имеем: 3 связанных поля в бд id, title, text, и форму с именем темы и телом.

Задача: Нужно проверить пришедшие данные с формы title и text на наличие в бд, если похожих нет, то внести, иначе переписать.

Вопросы по решению: Как их компактно сравнить, перезаписать, если такие данные уже содержаться, или записать под один Id, если таковых нет?
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
По полю text вам нормального индекса не построить, поэтому можно поступить так:
1) добавить поле hash и сделать его unique key
2) в поле hash писать что то типа md5(trim(title)+trim(text))
3)
INSERT INTO
  table
SET
  `id` = ?,
  `title` = ?,
  `text` = ?,
  `hash`= ? 
ON DUPLICATE KEY UPDATE
  id= ?

Делает то же что replace только без удаления записи

p.s. вы уверенны что вам надо обновлять поле id ? я спрашиваю потому, что оно обычно автоинкремент и примари кей, т.е. в таком случае обновить id на тоже значение, что уже существует не получиться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы