在不使用PHP的情况下更改MySQL查询的输出结构

时间:2012-09-14 03:20:57

标签: mysql database

我目前正在查询MySQL数据库中的数据并以PHP格式返回结果。

我正在运行查询

SELECT title.id, title.title, title.description
FROM co_titles title
WHERE title.id = :title

我得到的结果如下:

Array ( 
    [0] => Array ( 
        [id] => 1966 
        [title] => Example Title 
        [description] => Example Description
    )
)       

查询没有任何问题,这是我期望的确切结果,但我希望我的结果看起来像这样:

Array (
    [1966] => Array (
        [title] => Example Title 
        [description] => Example Description
    )
)   

请看下面的编辑,这已经不再相关了:有没有办法可以修改我的查询以使输出看起来像这样?我想这样做而不使用PHP,只使用MySQL,除非在MySQL中完全不可能!

我非常感谢你们的帮助,我一直在这个墙上撞墙。

编辑:好吧,基本上我试图做的事情似乎是不可能的。有人可以帮助最有效的方式从一个转换到另一个吗?

好吧我明白了,对于跟在我后面的人来说,我找到的最好方法如下:

function parseNotes($notes)
{
    $returnarray = array();
    foreach($notes as $i)
    {
        $returnarray[$i['id']] = $i;
        unset($returnarray[$i['id']]['id']);
    }
    return $returnarray;
}

谢谢大家的帮助!

2 个答案:

答案 0 :(得分:2)

你做不到。查询返回的记录是线性的。唯一的方法是在PHP代码中形成它。即使您使用MySQLGROUP BY也是无法执行此操作的服务器。

答案 1 :(得分:0)

无法直接实现MySQL。实现此目的的唯一方法是使用结果数组中的id将结果数组映射到另一个数组,作为新数组的索引。