2012-02-22 62 views
1

我正在使用phpMyAdmin,我想知道是否有一種方法可以默認列與另一列具有相同的值?使列與類似列具有相同的值

方案

所以我運行WordPress和我想給用戶訪問一個網頁一定的時間,所以我創建了一個trialTime列。我想將trailTime的值默認爲用戶registrationDate(也是一列)。這樣,我可以從註冊時開始倒計時,但管理員可以在管理面板中重置trialTime的值,如果他們想。

+1

我認爲你不能默認這樣做,但添加列後,你可以通過簡單的查詢爲所有用戶做到這一點。 「更新表SET列1 =列2」 – Electronick 2012-02-22 17:46:08

+0

Whelp如果我不能默認做它我想時間繼續計劃B這就是你說的。 – 2012-02-22 17:49:52

回答

2

如果您在使用wordpress並希望在註冊時設置某個用戶字段,請使用* user_register * action hook。

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 '); 
+0

這似乎是我的問題的一個很好的解決方案,但我不明白它在哪裏拉用戶名(作爲參數傳遞)。如果這掛鉤到用戶註冊那麼用戶ID將不會被設置呢? – 2012-02-22 18:57:20

+0

這個特定的鉤子在用戶被添加到數據庫後立即被調用。所以user_id是已知的。正如你所看到的,你正在更新(在MySQL查詢中更新)一個已經存在的數據庫條目。 – gintas 2012-02-22 23:59:21

0

好像你可能會在得太多問題。爲什麼不在註冊創建時在兩列中插入相同的值。

+0

嗯,我不知道註冊在哪裏發生,但我認爲它是在覈心的某個地方,通常不是一個好主意編輯,因爲它被每次更新覆蓋。 – 2012-02-22 17:48:06

0

MySQL中的default column value必須是一個常數,與您可以使用CURRENT_TIMESTAMPTIMESTAMP列除外。

如果記錄是在註冊時創建的,那麼使用TIMESTAMP列和CURRENT_TIMESTAMP就足夠了。

或者,你可以從數據庫中讀取數值,這樣的事情在處理這個問題:

SELECT IFNULL(trialTime, registrationDate) AS trialTime 

我假設值會有所不同,否則你就不會需要trialTime列在所有。