2011-11-17 98 views
2

我有一个垂直模式的数据库,解释说:如何将具有匹配列值的MySQL查询结果放入基于PHP值的关联数组中?

重点,猫,UID,VAR,缬氨酸等.. ,其中关键的是指数,猫类,UID是一组标识符var是行代表的值的名称,Val是该值。所以,几排会是这​​个样子:

key cat uid var   val 
1 1 98765 name   David 
2 1 98765 description handsome, young, sporting, 
3 1 98765 phone  123-456-789 
4 1 98765 email  [email protected] 
5 1 12345 name   Jason 
6 1 12345 description cool, hot, tall, 
7 1 12345 phone  222-555-1244 
8 1 12345 email  [email protected] 
8 1 12345 website  www.jason.com 

因此与查询/ PHP的目的是为了得到一个指定类别的所有行,然后返回基于UID的关联数组用于所有的行UID。结果会像

results{ 
["98765"] => ["name"] = David 
      => ["description"] = handsome, young, sporting, 
      => ["phone"] = 123-456-789 
      => ["email"] = [email protected] 
["12345"] => ["name"] = Jason 
      => ["description"] = cool, hot, tall, 
      => ["phone"] = 222-555-1244 
      => ["email"] = [email protected] 
      => ["website"] = www.jason.com 
} 

希望这是可以理解的,让我知道如果我的问题不清楚。

回答

2

尝试这样:

$category = 1; 
$result = mysql_query('SELECT * FROM table WHERE cat = ' . intval($category)); 
$results = array(); 
while($row = mysql_fetch_array($result)) 
{ 
    $results[ $row['uid'] ][ $row['var'] ] = $row['val']; 
} 
mysql_free_result($result); 
+0

工作得很好,谢谢。这是完成这个最有效的方法吗?或者会使用像fetchAll()更好? – Kawika

+0

你需要MySQLi来使用'fetch_all()',效率差异可能是微不足道的,因为你仍然需要遍历整个结果集来正确地形成你的数组。 – nickb

+0

很酷,很高兴知道。谢谢! – Kawika

0

,如果这样做的原因是使用的结果[“98765”]类型语法,你可以使用对象是更好的访问结果。你可以引用对象或使用一组对象,但代码看起来更清洁

+0

这是如何回答OP的问题?如果有的话似乎更适合评论。 – nickb

+0

我非常喜欢给出一种可能帮助他达到类似结果的替代解决方案。另一种评论给出了一个确切的解决方案,以实现他在他当前的问题中所要求的内容 – encodes

+0

它是,而事实并非如此。我想通过json输出数组,并且当关联数组的格式如此时更容易解析。我绝对愿意接受建议,但你能提供一个例子吗? – Kawika

相关问题