目前我正在使用此代码,创建一个新表并插入/更新用户验证码:
if ($result) {
echo "$captcha";
$queryInsertCaptcha = mysql_query ( "INSERT INTO xf_captcha (username, captcha) VALUES ('$user', '$captcha') ON DUPLICATE KEY UPDATE captcha = '$captcha'" );
} else {
echo "Tabelle muss noch erstellt werden.";
$queryCreateCaptchaTable = mysql_query ( "CREATE TABLE IF NOT EXISTS `xf_captcha` (
`username` varchar(255) NOT NULL default '',
`captcha` varchar(255) NOT NULL default '',
'timestamp',
PRIMARY KEY (`username`) );
");
}
现在我想添加一个时间戳,因为我想要阻止比x更早的验证码。
如何使用默认CURRENT_TIMESTAMP创建MySQL TIMESTAMP类型?
如果“ON DUPLICATE KEY UPDATE”运行,如何告诉MySQL更新时间戳? 或者我应该删除数据并插入新数据吗?
答案 0 :(得分:2)
如果您使用的是phpmyadmin,那么很容易进入数据库并选择Timestamp类型到timestamp字段,它会完成其余的尝试。
答案 1 :(得分:1)
对于问题的第1部分 “如何使用默认CURRENT_TIMESTAMP创建MySQL TIMESTAMP类型” 阅读http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html
上的在线手册关于问题的第二部分,我不确定为什么你允许发生重复的密钥冲突,最好避免这些冲突。
在尝试创建新记录之前,您的代码应该检查密钥是否存在 然后有2个单独的查询,一个用于已存在的用户名,另一个用于不存在的用户名
MySQL还具有在更新时自动刷新时间戳的功能