使用current_timestamp创建表,并在每行更新时更新它


Create table with current_timestamp and update it with every row update

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

    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还具有在更新时自动刷新时间戳的功能