2013-03-17 43 views
0

我有以下代码片段来实现多语言网站。 想法是,根据用户的语言,我需要将单词“Man”翻译为“Hombre”MySQL - 我可以在SELECT中使用一个变量来代替列名吗

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

代码: // $ USER_LANGUAGE(西班牙语在这种情况下)从日志后,他的个人资料传递至现场

SELECT $user_language 
    FROM TranslationTable 
    WHERE English=Man 

TranslationTable:

English  Spanish French 
    Man   Hombre homme 

感谢 SW

+0

你使用什么编程语言? – ysth 2013-03-17 17:53:20

回答

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' 
1

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

尝试它,如果它不工作,把你的变量在括号{}和你应该确定

相关问题