我正在使用phpMyAdmin,我想知道是否有一種方法可以默認列與另一列具有相同的值?使列與類似列具有相同的值
方案
所以我運行WordPress和我想給用戶訪問一個網頁一定的時間,所以我創建了一個trialTime列。我想將trailTime的值默認爲用戶registrationDate(也是一列)。這樣,我可以從註冊時開始倒計時,但管理員可以在管理面板中重置trialTime的值,如果他們想。
我正在使用phpMyAdmin,我想知道是否有一種方法可以默認列與另一列具有相同的值?使列與類似列具有相同的值
方案
所以我運行WordPress和我想給用戶訪問一個網頁一定的時間,所以我創建了一個trialTime列。我想將trailTime的值默認爲用戶registrationDate(也是一列)。這樣,我可以從註冊時開始倒計時,但管理員可以在管理面板中重置trialTime的值,如果他們想。
如果您在使用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 ');
這似乎是我的問題的一個很好的解決方案,但我不明白它在哪裏拉用戶名(作爲參數傳遞)。如果這掛鉤到用戶註冊那麼用戶ID將不會被設置呢? – 2012-02-22 18:57:20
這個特定的鉤子在用戶被添加到數據庫後立即被調用。所以user_id是已知的。正如你所看到的,你正在更新(在MySQL查詢中更新)一個已經存在的數據庫條目。 – gintas 2012-02-22 23:59:21
我不是一個WordPress的高手,但我不知道你是否可以使用WPDB
類來手動編碼。它允許完全控制數據庫。
好像你可能會在得太多問題。爲什麼不在註冊創建時在兩列中插入相同的值。
嗯,我不知道註冊在哪裏發生,但我認爲它是在覈心的某個地方,通常不是一個好主意編輯,因爲它被每次更新覆蓋。 – 2012-02-22 17:48:06
MySQL中的default column value必須是一個常數,與您可以使用CURRENT_TIMESTAMP
爲TIMESTAMP
列除外。
如果記錄是在註冊時創建的,那麼使用TIMESTAMP
列和CURRENT_TIMESTAMP
就足夠了。
或者,你可以從數據庫中讀取數值,這樣的事情在處理這個問題:
SELECT IFNULL(trialTime, registrationDate) AS trialTime
我假設值會有所不同,否則你就不會需要trialTime列在所有。
我認爲你不能默認這樣做,但添加列後,你可以通過簡單的查詢爲所有用戶做到這一點。 「更新表SET列1 =列2」 – Electronick 2012-02-22 17:46:08
Whelp如果我不能默認做它我想時間繼續計劃B這就是你說的。 – 2012-02-22 17:49:52