我有一个多语言网站,它的用户可以拥有不同语言的个人资料,例如每个用户可以将他的个人资料以“英语”、“法语”和“西班牙语”发布,比如 LinkedIn。
现在,我是一个使用“英语”语言查看网站的用户,所以当我转到其他会员个人资料页面时,我应该看到该会员个人资料是“英语”,如果该个人资料没有该语言,我应该在该成员“main_lang”中看到该配置文件。
所以我有一个“成员”表,其中有一列是“published_profile_langs”,在这个 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
}
有没有更好的方法来实现这一目标?也许以某种方式查询一次而不是两次?这种情况下有更好的数据库结构吗?
我将不胜感激任何帮助