这个想法是查询应该以某种指定的语言选择某个项目的名称和描述。这些字符串存储在一个简单的string
表中,该表有一列id和每种语言的列(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
语言。这是为了避免每次在数据库中添加新语言列时都必须更新代码。
是否可以通过预准备语句指定列名?
答案 0 :(得分:0)
似乎答案是否定的。 PDO : Select using a prepared statement returns column name
为了避免在代码中进行检查,可以添加一个包含所有语言的单独表格。
语言强>
(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"