MySQLi 事件在一定时间后删除行
MySQLi event delete row after certain time
我希望我页面上的用户在一天内验证他们的帐户(电子邮件)。如果用户尚未验证,则日期时间(日期)设置为类似 0000-03-23 15:45:56(年份是 0000 - 我知道这会在除夕夜引起问题)。
事件:(每小时)
DELETE FROM users WHERE SUBSTR(date, 0, 4)='0000' AND DAY(TIMEDIFF(NOW(), date)) >= 1
活动没有进行,所以我创建了这个测试查询:
$resultOne = $mysqli->query("SHOW COLUMNS FROM users WHERE SUBSTR(date, 0, 4)='0000'")or die($mysqli->error);
$resultTwo = $mysqli->query("SHOW COLUMNS FROM users WHERE DAY(TIMEDIFF(NOW(), date)) >= 1")or die($mysqli->error);
现在我收到此错误消息:
Unknown column 'date' in 'where clause'
问题:
- 为什么不起作用?
- 您推荐哪些更好的用户验证方法?
谢谢! - Minding
好的,这里有两个问题:
第一:测试查询
"SHOW COLUMNS" 不接受我的 where 子句,但 "SELECT *" 接受了。
第二个:SUBSTR()
我不知道具体原因,但 MySQLi SUBSTR 必须是:
SUBSTR(date, 1, 4)='0000'
不像PHP:
substr($user['date'], 0, 4) === '0000'
最后一个问题:
新用户几乎立即被删除(每小时 -> 测试:每分钟),而不是像他们应该的那样在 1 天后删除。
编辑:
我只想分享我的最终事件代码,以防有人需要它:
DELETE FROM users WHERE SUBSTR(date, 1, 4)='0000' AND HOUR(TIMEDIFF(NOW(), CONCAT(SUBSTR(NOW(), 1, 5), SUBSTR(date, 5)))) >= 24
谢谢大家的意见! - 心灵
我希望我页面上的用户在一天内验证他们的帐户(电子邮件)。如果用户尚未验证,则日期时间(日期)设置为类似 0000-03-23 15:45:56(年份是 0000 - 我知道这会在除夕夜引起问题)。
事件:(每小时)
DELETE FROM users WHERE SUBSTR(date, 0, 4)='0000' AND DAY(TIMEDIFF(NOW(), date)) >= 1
活动没有进行,所以我创建了这个测试查询:
$resultOne = $mysqli->query("SHOW COLUMNS FROM users WHERE SUBSTR(date, 0, 4)='0000'")or die($mysqli->error);
$resultTwo = $mysqli->query("SHOW COLUMNS FROM users WHERE DAY(TIMEDIFF(NOW(), date)) >= 1")or die($mysqli->error);
现在我收到此错误消息:
Unknown column 'date' in 'where clause'
问题:
- 为什么不起作用?
- 您推荐哪些更好的用户验证方法?
谢谢! - Minding
好的,这里有两个问题:
第一:测试查询
"SHOW COLUMNS" 不接受我的 where 子句,但 "SELECT *" 接受了。
第二个:SUBSTR()
我不知道具体原因,但 MySQLi SUBSTR 必须是:
SUBSTR(date, 1, 4)='0000'
不像PHP:
substr($user['date'], 0, 4) === '0000'
最后一个问题:
新用户几乎立即被删除(每小时 -> 测试:每分钟),而不是像他们应该的那样在 1 天后删除。
编辑:
我只想分享我的最终事件代码,以防有人需要它:
DELETE FROM users WHERE SUBSTR(date, 1, 4)='0000' AND HOUR(TIMEDIFF(NOW(), CONCAT(SUBSTR(NOW(), 1, 5), SUBSTR(date, 5)))) >= 24
谢谢大家的意见! - 心灵