【问题标题】:Create table with current_timestamp and update it with every row update使用 current_timestamp 创建表并在每行更新时更新它
【发布时间】:2013-09-13 01:32:33
【问题描述】:

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

    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 更新时间戳? 还是应该删除数据并插入新数据?

【问题讨论】:

标签: php mysql sql timestamp


【解决方案1】:

如果您使用的是 phpmyadmin,那么它很容易进入数据库并选择时间戳类型到时间戳字段,它会做剩下的尝试。

【讨论】:

  • 我知道,但我希望 php 来处理这个。
  • 我建议从 phpmyadmin 执行此操作,这比 if 和 else 您的查询更准确且易于使用
  • 是的,它会自动安装 xampp 并检查它们是否让 php 变得简单,不会让你自己复杂化
  • 我的意思是表的创建必须自动进行。仍在寻找创建它的解决方案。
  • 你用什么引擎,你用什么操作系统,我会帮你的,我在你的服务中
【解决方案2】:

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

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

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

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

【讨论】:

  • k,谢谢。如何通过自动更新创建时间戳字段。 php ?
猜你喜欢
  • 2011-06-21
  • 2012-12-30
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-13
相关资源
最近更新 更多