2013-08-26 37 views
0

请帮我解决这个问题。 我想要构建一个多级菜单,所以我想通过一个关联数组,在smarty模板中使用foreach循环进行迭代。 首先,我有这样的MySQL输出: enter image description here如何从关联数组构建多级菜单。

现在,我尝试从它那里得到一个关联数组,所以我试图 fetchAll(PDO::FETCH_ASSOC),但由于列名是一样的,它给了我从右边列的值:

Array ([0] => Array ([id] => 7 [name] => Beta 1-3 glucan) [1] => Array ([id] => 8 [name] => Okinawa Fucoidan) 

请如果您有任何想法如何处理此表以获得多维菜单,请告诉我。

谢谢。

+0

我假设你有'JOIN'表,并且在它们中都有'id'和'name'(或者你加入了同一张表)。你需要做的是在你的查询中使用'AS',例如:而不是'SELECT * FROM table JOIN表ON ...'写'SELECT t1.id AS level1_id,t1.name AS level1_name,t2。 id AS level2_id,t2.name AS level2_name FROM table t1 JOIN表t2 ...'。该解决方案将为您提供每行4个不同的字段名称(level1_id,level1_name,level2_id,level2_name) –

回答

1

在查询中使用FETCH_NUM或创建别名。

0

我假设你JOIN表,并在他们两个你有idname(或你加入同一张表)。你需要做的是在你的查询中使用AS

例如:

相反的:SELECT * FROM table JOIN table ON [...]

写:SELECT t1.id AS level1_id, t1.name AS level1_name, t2.id AS level2_id, t2.name AS level2_name FROM table t1 JOIN table t2 ON [...]

该解决方案将为您提供每行中4个不同的字段名称(level1_id,level1_name,level2_id,level2_name)。