我试图让他所属的用户团队比较的两个表
数据库表:
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>");
}
}
?>