3

目前我正在使用此代码创建一个新表并插入/更新用户验证码:

    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 创建 MySQLs TIMESTAMP 类型?

如果“ON DUPLICATE KEY UPDATE”运行,我如何告诉 MySQL 更新时间戳?还是我应该删除数据并插入新数据?

4

2 回答 2

2

如果您使用的是 phpmyadmin,那么进入数据库并选择时间戳类型到时间戳字段非常容易,它会完成其余的尝试。

于 2013-09-09T14:23:43.847 回答
1

对于您问题的第 1 部分“如何使用默认 CURRENT_TIMESTAMP 创建 MySQLs TIMESTAMP 类型”,请阅读http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html上的在线手册

关于问题的第二部分,我不确定您为什么允许发生重复的密钥冲突,最好避免这些冲突。

您的代码可能应该在尝试创建新记录之前检查密钥是否存在然后有2个单独的查询,一个用于已经存在的用户名,另一个用于不存在的用户名

MySQL 还具有在更新时自动刷新时间戳的功能

于 2013-09-09T14:29:35.690 回答