Укажите имя столбца с помощью подготовленного оператора

Идея состоит в том, что запрос должен выбрать имя и описание некоторого элемента на определенном языке. Строки хранятся в string таблице simple, в которой есть столбец для идентификатора и столбец для каждого языка (fx: 'us' и 'fr').

Пользователи могут указать, какой язык они хотят, через API, что означает, что запрос должен быть выполнен с использованием подготовленных операторов PHP.

Следующий код показывает, как я бы хотел, чтобы это работало. Проблема в том, что name.? и description.? не будут оценивать допустимые столбцы, когда параметры привязаны.

$query = $mysqli->prepare(
   'SELECT name.?, description.?
    FROM item
    JOIN string AS name ON item.nameId = name.id
    JOIN string AS description ON item.descriptionId = description.id
    WHERE item.id = ?');

$query->bind_param('ssi', $lang, $lang, $id);

Я хочу избежать проверки в коде допустимости языка $lang перед запросом в базу данных. Это сделано для того, чтобы избежать необходимости обновлять код каждый раз, когда в базу данных добавляется новый столбец языка.

Можно ли указать имя столбца с помощью подготовленного оператора?


person Sam Olesen    schedule 15.05.2014    source источник


Ответы (1)


Похоже, ответ отрицательный. PDO: выбор с использованием подготовленного оператора возвращает имя столбца

Чтобы избежать проверки кода, можно добавить отдельную таблицу, содержащую все языки.

Языки

(id, language)
1, "us"
2, "fr"

Строки

(id, stringId, languageID, str)

1, 4, 1, "Hello"
2, 4, 2, "Bonjour"
3, 5, 1, "Yes"
4, 5, 2, "Oui"
person Sam Olesen    schedule 15.05.2014