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, но я не понял как мне применить это к моим условиям.
Спасибо за помощь.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 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 настраиваете, чтобы было уникальным.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы