首先是创建数据表结构和数据表:
-- ----------------------------
-- Table structure for `lm`
-- ----------------------------
DROPs TABLE IF EXISTS `lm`;
CREATEs TABLE `lm` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(50) DEFAULT NULL,
`pid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records
-- ----------------------------
INSERTs INTO `lm` VALUES ('1','计算机应用','0'), ('2','物联网','0'), ('3','软件技术','0'), ('4','14计算机应用','1'), ('5','15计算机应用','1'), ('6','16计算机应用','1'), ('7','14物联网','2'), ('8','15物联网','2'), ('9','16物联网','2'), ('10','14软件技术','3'), ('11','15软件技术','3'), ('12','16软件技术','3'), ('13','14计算机应用1班','4'), ('14','14计算机应用2班','4'), ('15','14计算机应用3班','4'), ('16','15计算机应用2班','5'), ('17','15计算机应用3班','5'), ('18','16计算机应用1班','6'), ('19','14软件技术1班','10'), ('20','14软件技术2班','10'), ('21','15软件技术1班','11'), ('22','16软件技术1班','12'), ('23','15物联网1班','8'), ('24','16物联网1班','9'), ('25','16物联网2班','9'), ('26','16物联网3班','9'), ('27','15计算机应用1班',NULL);
然后编写递归算法
header("Content-type: text/html; charset=gb2312");
$mypdo=new pdo("mysql:host=localhost;dbname=news;charset=gbk","root","");
$mypdo->query("set names gb2312");
function getlm($id=0){
global $mypdo;
$sql="select id,title from `lm` where pid=$id";
$stmt=$mypdo->query($sql);
if($stmt){
echo "<br>";
while($rs=$stmt->fetch(PDO::FETCH_ASSOC)){
echo $rs['title']."<br>";
$id=$rs['id'];
getlm($id) ;
}
echo "<br>";
}
}
getlm();
?>