(我真的只需要一些 MYSQL 魔法,但我会解释更多我在做什么)
我正在构建一个翻译系统。我知道一种方法是为我的每种内容类型创建一个翻译表。例如,如果我有一个帖子表,那么我会有一个单独的帖子翻译表:
tbl posts
----------
id
title
content
tbl posts_translations
---------
id
title
content
locale
然后,如果我执行左连接并使用 PHP 获得结果,我将获得我想要的所有数据作为键=>值对,并且我可以在我的应用程序中使用 $row['p_title']
因为我将有多种内容类型要翻译,而不是以这种方式维护字段名称,所以我可以用一个来达到相同的结果吗?
即
tbl translations
--------------------
id
type i.e 'posts'
type_id i.e. posts.id
key i.e. 'content', 'title'
value i.e. 'this is a title'
locale
因此,为了获得单个帖子的所有翻译键,我会:
SELECT key, value FROM translations
WHERE type = 'posts'
AND type_id = 3
这会给我这样的结果集:
$row = array(
'key' => 'title',
'value' => 'This is a title'
)
但我想要的是:
$row['title'] => 'This is the title'
当然我可以执行 PHP 循环来格式化数据,但是 MYSQL 中是否有某些东西可以为我呈现这些数据而无需循环每个结果的开销?
注意
我希望生成的数组键是从列/字段值而不是列/字段名称生成的。
最佳答案
没有单一步骤的方法。
自己写一个类似的子程序
// Given an array of arrays (not ASSOC), use the first column as "key"; second as "value"
function KeyValue($rows)
{
$kv = array();
foreach ($rows as $row)
{
$kv[$row[0]] = $row[1];
}
return $kv;
}
关于php - 获取 MYSQL 结果为 key=>value 格式,尽管 key 不是字段名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738344/