我有以下代码段来实现多语言网站。 想法是,根据用户的语言,我需要将单词“Man”翻译为“Hombre”
我的问题:在这里使用$ user_language而不是硬编码列名“西班牙语”是否有效。
代码: // $ user_language(本例中为西班牙语)在登录网站后从其个人资料中传递
SELECT $user_language
FROM TranslationTable
WHERE English=Man
TranslationTable:
English Spanish French
Man Hombre homme
由于 SW
答案 0 :(得分: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 :(得分:1)
我不认为这应该是一个问题。我在列选择过程中使用了变量(根据所选语言的数据库字段前缀),它对我有用。
尝试一下,如果它不起作用,请将变量放在大括号{}中,你应该没问题
答案 2 :(得分:0)
你可以(毕竟它只是一个字符串),但是你需要注意注意 - 确保你在替换之前过滤了变量(filter_var
效果很好:http://php.net/manual/en/function.filter-var.php)