Ich versuche, Datensätze aus einer Tabelle zu finden, die auf einer Variablen basieren, die aus der Benutzerübermittlung abgerufen wird. Das ist meine Frage:
$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));
Wenn ich diese Abfrage ausführe, wird jedoch die folgende Fehlermeldung angezeigt:
PDOException: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von '' field_data_field_news_release_date '' in Zeile 2: SELECT: fieldValue FROM {: field}; Array ([: field] => field_data_field_news_release_date [: fieldValue] => field_news_release_date_value)
Ich kann die Datensätze erfolgreich abrufen mit:
$query = db_query('SELECT ' . $fieldValue . ' FROM { ' . $field . '}');
Nach meinem Verständnis wäre dies jedoch unsicher.
Weiß jemand, warum die erste Abfrage nicht funktioniert?
t()
für Zeichenfolgen, die nicht übersetzt werden müssen. Der Name einer Datenbanktabelle oder eines Datenbankfelds muss nicht übersetzt werden. Die Tabelle "Knoten" ist immer die Tabelle "Knoten", unabhängig von der Sprache, die derzeit für die Site aktiviert ist.