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

谢谢大家的意见! - 心灵