【问题标题】:Make Column have Same Value as Similar Column使列与相似列具有相同的值
【发布时间】:2012-03-13 02:11:08
【问题描述】:

我正在使用 phpMyAdmin,我想知道是否有一种方法可以默认一列与另一列具有相同的值?

场景

所以我正在运行一个 wordpress,我想让用户在一定时间内访问一个页面,所以我创建了一个 trialTime 列。我想将 trailTime 的值默认为用户 registrationDate (这也是一列)。这样我就可以从他们注册时开始倒计时,但如果他们愿意,管理员可以在管理面板中重置 trialTime 的值。

【问题讨论】:

  • 我认为默认情况下您不能这样做,但是在添加列之后,您可以通过对所有用户的简单查询来做到这一点。 "更新表 SET column1 = column2"
  • 如果默认情况下我不能这样做,我想是时候继续执行 B 计划了,这就是你所说的。

标签: php mysql sql wordpress phpmyadmin


【解决方案1】:

我不是 Wordpress 专家,但我想知道您是否可以使用 WPDB 类手动编码。它允许完全控制数据库。

http://codex.wordpress.org/Class_Reference/wpdb

【讨论】:

    【解决方案2】:

    看来你可能想多了这个问题。为什么不在创建注册时将相同的值插入到两列中。

    【讨论】:

    • 好吧,我不确定注册发生在哪里,但我假设它位于核心中的某个地方,这通常不是一个好主意,因为每次更新都会覆盖它。跨度>
    【解决方案3】:

    如果您正在使用 wordpress 并想在注册时设置某些用户字段,只需使用 *user_register* 操作挂钩。

    function set_that_additional_thing ($user_id) {
         global $wpdb;
         $wpdb->query("UPDATE `" . $wpdb->prefix . "users` 
                       SET `copy_field` = `field` 
                       WHERE `user_id` = " . $user_id);
    }
    
    add_action('user_register', 'set_that_additional_thing ');
    

    【讨论】:

    • 这似乎是我的问题的一个很好的解决方案,但我不明白它在哪里拉用户 ID(作为参数传递)。如果这与用户注册挂钩,那么不会设置用户 ID 吗?
    • 这个特殊的钩子在用户被添加到数据库之后被调用。所以 user_id 是已知的。如您所见,您正在更新(在 mysql 查询中更新)一个已经存在的数据库条目。
    【解决方案4】:

    MySQL 中的default column value 必须是常量,但您可以将CURRENT_TIMESTAMP 用于TIMESTAMP 列。

    如果记录是在注册时创建的,那么使用带有CURRENT_TIMESTAMPTIMESTAMP 列就足够了。

    或者,您可以在从数据库中读取值时进行处理,如下所示:

    SELECT IFNULL(trialTime, registrationDate) AS trialTime
    

    我假设这些值可能不同,否则您根本不需要 trialTime 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多