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

时间:2013-09-09 14:14:03

标签: php mysql sql timestamp

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

    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更新时间戳? 或者我应该删除数据并插入新数据吗?

2 个答案:

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