0

多言語 Web サイトを実装するための次のコード スニペットがあります。アイデアは、ユーザーの言語に応じて、「Man」という単語を「Hombre」に翻訳する必要があることです

私の質問: ここでハードコードされた列名「Spanish」の代わりに $user_language を使用することは有効ですか?

code: //$user_language (この場合はスペイン語) は、サイトへのログイン後にプロファイルから渡されます

  SELECT $user_language 
  FROM TranslationTable 
  WHERE English=Man

翻訳テーブル:

  English     Spanish   French
  Man          Hombre    homme

ありがとうSW

4

3 に答える 3

1

私はそれが問題になるべきではないと思います。列選択プロセスで変数 (選択した言語に応じたデータベース フィールドのプレフィックス) を使用しましたが、うまくいきました。

試してみて、うまくいかない場合は、変数を中かっこ {} に入れてください。

于 2013-03-17T17:25:25.893 に答える
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 に答える
0

できます (結局のところ単なる文字列です) が、インジェクションには注意する必要があります - 置換の前に変数をフィルター処理したことを確認してください (filter_var非常にうまく機能します: http://php.net/manual/en/function.フィルター-var.php )。

于 2013-03-17T17:29:23.700 に答える