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