Sorikon
@Sorikon
PHP, PYTHON

Как выполнить запрос SQL с условием?

Добрый день, у меня есть запрос:
mysqli_query($db, "INSERT INTO `user` (`id`, `email`, `password`, `nickname`,`date`) VALUES (NULL, '$email', '$password', '$nickname','$date')");

Как правильно сформировать запрос, чтобы запись добавилась только при условии, что прошло времени с текущей даты 24 часа и чтобы в БД не было такого nickname, который передаётся в $nickname.

Нужно чтобы запись добавилась в БД, только при этих условиях.
Насколько я понял, есть запрос INSERT IGNORE, но я не понял как мне применить это к моим условиям.
Спасибо за помощь.
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@Akela_wolf
Extreme Programmer
и чтобы в БД не было такого nickname, который передаётся в $nickname.

Уникальный индекс по полю nickname
чтобы запись добавилась только при условии, что прошло времени с текущей даты 24 часа

Сформулировано непонятно. Если речь идет о том что запись должна стать "видима" через 24 часа после добавления, то можно попробовать так:
  1. Добавляем в таблицу колонку active_since
  2. В приложении (или триггером на вставку) пишем туда нужную дату (текущую + 24 часа)
  3. Делаем VIEW, на котором вешаем условие active_since <= NOW()
  4. Селекты делаем не из таблицы, а из VIEW.

Но это в какой-то степени извращение. Подозреваю что вашу проблему можно решить проще.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@russeljo
1. Ищете самую свежую запись по date и сравниваете с текущей датой. Если разница более 24ч, то добавляете.
2. поле nickname настраиваете, чтобы было уникальным.
Ответ написан
Ваш ответ на вопрос

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

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