目前我正在使用这段代码创建一个新表并插入/更新用户验证码:
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 时间戳类型?
如果运行"重复密钥更新",如何告诉MySQL更新时间戳?还是我应该删除数据并插入新数据?
如果您使用的是phpmyadmin 比它很容易进入数据库并选择时间戳类型的时间戳字段,它将完成其余的尝试。
对于您问题的第 1 部分"如何使用默认CURRENT_TIMESTAMP创建 MySQL 时间戳类型"阅读在线手册,网址为 http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html
关于问题的第二部分,我不确定您为什么允许发生重复的密钥冲突,最好避免这些冲突。
您的代码可能应该在尝试创建新记录之前检查键是否存在然后有 2 个单独的查询,一个用于已经存在的用户名,另一个用于不存在的用户名
MySQL还具有在更新时自动刷新时间戳的功能