尝试通过比较2个sql表来获取成员的团队名称列表


Trying to get a list of team names a member is a part of via comparing 2 sql tables

我试图让他所属的用户团队比较的两个表

数据库表:

CREATE TABLE `teams` (
  `teamid` int(11) NOT NULL AUTO_INCREMENT,
  `teamname` varchar(45) DEFAULT NULL,
  `teamdesc` longtext,
  `founder` varchar(45) NOT NULL,
  `dateformed` int(11) NOT NULL,
  PRIMARY KEY (`teamid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
CREATE TABLE `teammembers` (
  `teamid` int(11) NOT NULL,
  `member` varchar(45) NOT NULL,
  `rank` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`teamid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

当前功能我必须做的事情:

/* removeProject */
function getTeamNames($id){
    global $session, $database;
    $link = $database->connection;
    $stmt = $link->prepare("SELECT teamname FROM teams WHERE teamid=$id");
    $stmt->execute();
    $r = $stmt->fetch();
    return array('teams'=>$r['teamname']);
}

查询以获取团队名称:

$link = $database->connection;
 try{
    $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $q = "SELECT * FROM teammembers WHERE member=:un";
    $prep = $link->prepare($q);
    $array = array(
        ':un' => $user
    );
    $prep->execute($array);
}catch(PDOException $error){
    echo($error);
}

然后显示数据的信息:

<select multiple class="form-control">
    <?php
    while($tid = $prep->fetch()){
        $teams = $database->getTeamNames($tid['teamid']);
        echo ("<option>$teams</option>");
    } ?>
</select>

它只将数据显示为"阵列"

更新!!!

我就是这样修复的:)

while($tid = $prep->fetch()){
    $teams = $database->getTeamNames($tid['teamid']);
    //echo var_dump($teams);
    $team = $teams['teams'];
        echo ("<option>$team</option>");
}

代码是正确的,您将数据作为数组(return array('teams'=>$r['teamname']);)返回

所以,当您回显数据时,请使用echo("<option>".$teams['teams']."</option>"),否则不要将结果作为数组返回。

函数function getTeamNames($id)返回一个关联数组,这就是为什么没有得到结果的原因。

你的循环应该看起来像

<?php
while($tid = $prep->fetch()){
    $teams = $database->getTeamNames($tid['teamid']);
    foreach($teams['teams'] as $team){
        echo ("<option>$teams</option>");
    }
} 
?>