代码如下:数据表字段 ID name PID
# Host: localhost (Version: 5.7.26)
# Date: 2022-05-09 16:03:27
# Generator: MySQL-Front 5.3 (Build 4.234)
/*!40101 SET NAMES utf8 */;
#
# Structure for table "cesi"
#
CREATE TABLE `cesi` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '本人id',
`pid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '父id',
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '本人姓名',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
#
# Data for table "cesi"
#
INSERT INTO `cesi` VALUES (1,0,'一级经理pid=0'),(2,1,'二级经理pid=1'),(3,1,'二级经理pid=1'),(4,1,'二级经理pid=1'),(5,1,'二级经理pid=1'),(6,1,'二级经理pid=1'),(7,1,'二级经理pid=1'),(8,1,'二级经理pid=1'),(9,2,'三级经理pid=2'),(10,2,'三级经理pid=2'),(11,3,'三级经理pid=3'),(12,10,'四级经理pid=10'),(13,11,'四级经理pid=11'),(14,10,'四级经理pid=10'),(15,13,'五级经理pid=13'),(16,14,'五级经理pid=14');
<?php
require_once("conn.php");
$query = "SELECT * FROM cesi";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
/*输出结果 */
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$id=$row['id'];/**/
$pid=$row['pid']; /*上级*/
$name=$row['name']; /*名字*/
/*上级*/
$sj = mysql_fetch_assoc(mysql_query("SELECT * FROM cesi WHERE id=".$row['pid'].""));
$sjname= "{$sj[name]}";
/*同级*/
$tj = $row = mysql_fetch_array(mysql_query("SELECT * FROM cesi WHERE pid=".$row['pid'].""));
$tjname.= "{$tj[name]}";
/*下级*/
$xj = $row = mysql_fetch_array(mysql_query("SELECT * FROM cesi WHERE pid=".$row['pid'].""));
$xjname.= "{$xj[name]}";
echo "
ID:$id <br />
姓名:$name$wname <br />
上级:$sjname <br />
同级:$tjname<br />
下级:$xjname<br /><hr>";
}?>
上级可以查出来,为什么同级和下级对应的不正确呢?求修改
/*同级*/
$tj = $row = mysql_fetch_array(mysql_query("SELECT * FROM cesi WHERE id=".$row['id'].""));
$tjname.= "{$tj[name]}";
/*下级*/
$xj = $row = mysql_fetch_array(mysql_query("SELECT * FROM cesi WHERE pid=".$row['id'].""));
$xjname.= "{$xj[name]}";