PHP怎么获取一个分类下面的所有子分类的数据?

数据表结构如下:
| category | CREATE TABLE category (
id int(11) NOT NULL DEFAULT '0',
pid int(11) DEFAULT NULL,
title varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
name varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

问题:
现在每一个分类都可以是无限级,随便点击一个全部,展现所有当前分类下面的子分类数据。
比如:点击了食品分类
逻辑:食品中有水果,蔬菜,水果里有苹果,香蕉,蔬菜里有西蓝花,白菜,等等。
点击食品后,怎么把苹果,香蕉,西蓝花,白菜的所有数据展现出来?

也就是说,不管点击哪个分类,都把当前分类下面的所有子分类下面的数据都返回。

请问怎么搞呢?(PHP)

最佳答案

category表里加个字段 path

ALTER TABLE `category`
ADD COLUMN `path`  varchar(255) NULL DEFAULT 0 AFTER `name`;

以逗号逐级分隔所有父类,

id pid name path
1 0 食品 0
2 1 水果 0,1
3 1 蔬菜 0,1
4 2 苹果 0,1,2

查询所有食品子类

SELECT * from category where FIND_IN_SET('1', `path`);