0

我有以下代码片段来实现多语言网站。想法是,根据用户的语言,我需要将单词“Man”翻译成“Hombre”

我的问题:在这里使用 $user_language 而不是硬编码的列名“Spanish”是否有效。

代码://$user_language(在这种情况下为西班牙语)在登录网站后从他的个人资料中传递

  SELECT $user_language 
  FROM TranslationTable 
  WHERE English=Man

翻译表:

  English     Spanish   French
  Man          Hombre    homme

谢谢西南

4

3 回答 3

1

我不相信您可以使用这样的变量,但您可以使用动态 SQL 构建查询。

但是,如果您有机会更改表结构,那可能是您更好的选择。我建议将其分解为下表:

Language (store your languages such as English, Spanish, etc):
LanguageId and LanguageName

LanguageTranslation (language translation lookup table):
LanguageId, TokenId, and Translation

Token (store your tokens - versus querying directly on the english translation):
TokenId and TokenName

然后你可以像这样轻松地查询它:

SELECT Translation
FROM LanguageTranslation LT
   JOIN Language L ON LT.LanguageId = L.LanguageId
   JOIN Token T ON LT.TokenId = T.TokenId
WHERE L.LanguageName = 'Spanish'
    AND T.TokenName = 'Man'
于 2013-03-17T17:16:52.707 回答
1

我不认为这应该是一个问题。我在列选择过程中使用了变量(根据所选语言的数据库字段前缀),它对我有用。

试试看,如果不行,把你的变量放在大括号{}里,你应该没问题

于 2013-03-17T17:25:25.893 回答
0

你可以(毕竟它只是一个字符串),但你需要警惕注入 - 确保你在替换之前过滤了变量(filter_var效果很好: http: //php.net/manual/en/function.过滤器-var.php)。

于 2013-03-17T17:29:23.700 回答