【发布时间】:2012-11-19 18:31:52
【问题描述】:
我有一个多语言网站,它的用户可以拥有不同语言的个人资料,例如,每个用户的个人资料都可以用“英语”、“法语”和“西班牙语”发布,例如 LinkedIn。
现在,我是一个使用“英语”语言查看网站的用户,因此当我转到其他会员个人资料页面时,我应该看到该会员个人资料以“英语”显示,如果该个人资料不可用的话语言,我应该在该成员“main_lang”中看到该配置文件。
所以我有一个“成员”表,其中有一列是“published_profile_langs”,在这个列中,每个成员发布他的个人资料的语言将以逗号分隔:“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 代码 :-?
标签: mysql database-design