ユーザーの送信から取得された変数に基づいて、テーブルからレコードを検索しようとしています。これは私のクエリです:
$field = t('field_data_' . variable_get('tabbed_content_field'));
$fieldValue = t(variable_get('tabbed_content_field') . '_value');
$query = db_query('SELECT :fieldValue FROM {:field}', array(':field' => $field, ':fieldValue' => $fieldValue));
ただし、このクエリを実行するたびに次のエラーが発生します。
PDOException:SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあります。2行目の '' field_data_field_news_release_date ''付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。SELECT:fieldValue FROM {:field}; 配列([:field] => field_data_field_news_release_date [:fieldValue] => field_news_release_date_value)
私はレコードを正常に取得できます:
$query = db_query('SELECT ' . $fieldValue . ' FROM { ' . $field . '}');
しかし、私が理解しているように、これは安全ではありません。
最初のクエリが機能しない理由を誰かが知っていますか?
@kiamlalunoああそうだね。
—
スティーブンヤング
t()
翻訳する必要のない文字列には使用しません。データベーステーブルまたはデータベースフィールドの名前は、翻訳する必要があるものではありません。「ノード」テーブルは、サイトで現在有効になっている言語とは無関係に、常に「ノード」テーブルです。