MySQLi事件在特定时间后删除行

时间:2015-06-11 11:41:10

标签: php events mysqli where verification

我希望我的页面上的用户能够在一天内验证他们的帐户(电子邮件)。如果用户尚未验证,则日期时间(日期)设置为 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);

现在我收到此错误消息:

  

'where子句'中的未知列'date'

问题:

  • 为什么不工作?
  • 您有哪些更好的方法来验证用户?

谢谢! - Minding

1 个答案:

答案 0 :(得分:0)

好的,这里有两个问题:

首先:测试查询

“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

谢谢所有您的意见! - Minding