我有一個多語種的網站,它的用戶可以有不同的語言配置文件,例如每個用戶可以有自己的個人資料刊登在「英語」和「法國」和「西班牙」,東西比如LinkedIn。數據庫設計 - 多語種的網站
現在,我是使用「英語」語言查看網站的用戶,因此,當我轉到其他成員個人資料頁面時,如果該個人資料不可用,我應該在「英語」中看到該成員個人資料該語言,我應該看到該成員「main_lang」中的配置文件。
所以我有一個名爲「published_profile_langs」的「members」表,在這個COL中每個成員發佈他的個人資料的語言將被存儲逗號分隔:「english,spanish」和「main_lang 「col這是用戶的主要語言(他的個人資料肯定是在main_lang發佈的,因爲我們要求詳細的註冊步驟)。
在另一個方面,成員詳細信息存儲在不同的表中,諸如「members_details_english」,「members_details_spanish」,「members_details_french」。
我想加入我的查詢,但它似乎不可能以我管理的方式進行,目前我需要使用2個查詢來加載上述場景中的成員詳細信息,我的代碼位於「members_profile.php」是:
// FIRST QUERY
$check_member = mysql_query("SELECT main_lang, profile_published_langs FROM members WHERE id = '$this_user_id'");
while($row = mysql_fetch_array($check_member)){
$this_main_lang = $row['main_lang'];
$this_profile_published_langs = $row['profile_published_langs'];
}
$this_profile_published_langs_arr = explode(',', $this_profile_published_langs);
if(!in_array($lang, $this_profile_published_langs_arr)) $lang = $this_main_lang;
$details_table = 'members_details_' . $lang;
// SECOND QUERY
$get_details = mysql_query("SELECT * FROM $details_table WHERE member_id = '$this_user_id'");
while($row_details = mysql_fetch_array($get_details)){
//blah blah
}
有沒有更好的方法來實現這一目標?也許有人去查詢一次,而不是兩次?針對這種情況的更好的數據庫結構?
我希望任何形式的幫助
您的問題被標記爲MySQL,但包含PHP代碼: - ? –