2013-03-17 47 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

我不認爲這應該是一個問題。我在列選擇過程中使用了變量(根據所選語言的數據庫字段前綴),它對我有用。

嘗試它,如果它不工作,把你的變量在括號{}和你應該確定

相關問題