选择QUERY WITH UPDATE QUERY,如果MYSQL字段发生更改,则发送电子邮件

时间:2011-10-29 18:43:10

标签: php mysql select cron sql-update

我有一个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 个答案:

答案 0 :(得分:1)

分两个阶段进行:

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

检索所有过期的ID。获取id列表并将其填入更新查询中:

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

然后重新使用ID列表生成电子邮件。

答案 1 :(得分:0)

你可以

一个。首先运行您的选择并获取即将过期的user_ids,然后运行查询以使它们过期。如果第一次失败,您可能会有两次运行更新。

B中。您可以在订阅时创建触发器,将记录写入您的cron脚本可以使用的过期通知队列等,并生成电子邮件

℃。您可以在订阅表中添加过期日期,然后在事后查询表以查找“今天”过期的订阅

答案 2 :(得分:0)

使用事务并首先执行具有相同WHERE条件的SELECT语句。