我有一个cron工作,我需要每分钟运行一次以检查数据库表。该表由两个字段组成(用户名,lastping)。 lastping是一个mysql datetime对象,由另一个使用mysql NOW()
函数的脚本设置。我需要检查lastping以查看它自上次更新后是否已超过一分钟,如果它在最后一分钟没有更新,我想删除包含该用户名的行并持续。我想我可以使用像这样的sql语句来检查。
FROM client WHERE lastping < NOW() - INTERVAL 1 MINUTE;
我的问题是,如何格式化select语句以对整个表执行此检查,如果超过一分钟则删除该记录。
对于仍然连接的用户,我将每15-30秒更新一次数据库。这样做的全部目的是让我能够看到哪个最终用户正在使用我的C ++应用程序,或者至少在过去的60秒内,所以我可以保留统计数据。
这就是我到目前为止所做的,输出是Deleted inactive users但实际上并没有这样做。
mysql_connect(SERVER, USERNAME, PASSWORD);
mysql_select_db(DATABASE);
$query="DELETE (username, lastping) from client where lastping < NOW() - INTERVAL 1 MINUTE";
mysql_query($query) or die ('Error updating database');
echo "Deleted inactive users";
答案 0 :(得分:0)
您无法在一个查询中删除和选择行。无法“返回”或“选择”您删除的行。
您可能希望使用事务,您将在单个事务中执行两个查询。 http://dev.mysql.com/doc/refman/5.0/en/commit.html