ВЫБЕРИТЕ ЗАПРОС С ОБНОВЛЕНИЕМ ЗАПРОСА, отправьте письмо, если поле MYSQL изменится - PullRequest
0 голосов
/ 29 октября 2011

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

$curdate=date('Y-m-d'); 

$sql=("UPDATE subscription SET status='inactive' WHERE (end_date < '$curdate')");

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

Есть ли способ, которым я могу запустить SELECT QUERY вместе с вышеупомянутым UPDATE QUERY и получить user_id пользователя, чья подписка только что истекла?

Спасибо

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Сделайте это в два этапа:

SELECT user_id
FROM subscriptions
WHERE status='active' AND (end_date < '$curdate')

, чтобы получить все истекающие идентификаторы.Возьмите этот список идентификаторов и вставьте его в свой запрос на обновление:

UPDATE subscriptions SET ... WHERE (user_id IN ($list_of_ids_from_before))

Затем повторно используйте список идентификаторов для создания ваших электронных писем.

0 голосов
/ 29 октября 2011

Используйте транзакцию и сначала выполните оператор SELECT с тем же условием WHERE.

0 голосов
/ 29 октября 2011

Вы можете

A.Сначала запустите select и получите user_ids, срок действия которого истекает, а затем выполните запрос, чтобы истечь.Существует риск того, что вы можете запустить обновление дважды, если оно выйдет из строя в первый раз.

B.Вы можете создать триггер для подписки для записи записи в очередь уведомлений с истекшим сроком действия и т. П., Которую ваш сценарий cron может использовать и генерировать электронные письма

C.Вы можете добавить дату с истекшим сроком в таблицу подписок, а затем запросить таблицу после факта, чтобы найти подписки с истекшим сроком «сегодня»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...