我正在组建一个联盟剧本。当有人注册联盟时,他们会从下拉区域中的可用球队列表中进行选择。
我遇到的问题是,当有多个字段时,我收到此错误消息。
“子查询返回超过1行”
这是脚本:
//List available teams
$query_chamoline = "SELECT * FROM MLB WHERE `team`<>(SELECT `team` FROM leaguemembers WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";
$chamoline = mysql_query($query_chamoline) or die(mysql_error());
$row_chamoline = mysql_fetch_assoc($chamoline);
$totalRows_chamoline = mysql_num_rows($chamoline);
<select id="team">
<option value="">Select Available Team</option>
<?php do { ?>
<?php
$tname=$row_chamoline['team'];
if($totalRows_chamoline>0)
{?>
<option value="<?php echo $tname ?>"><?php echo $tname ?></option><?php }} while ($row_chamoline = mysql_fetch_assoc($chamoline)); ?>
</select>
我从MLB表中的球队总数列表中选择与联盟成员表中其他成员选择的球队不匹配。
答案 0 :(得分:2)
更改“&lt;&gt;”与“不在(...)”
为什么呢? “&LT;&gt;” 中除了单个值(例如'team'&lt;&gt;'xxx'),“not in”使用set逻辑来处理许多项目(例如'team'不在('aaa','bbb','ccc) “))
答案 1 :(得分:2)
请尝试使用NOT IN:
$query_chamoline = "SELECT * FROM MLB WHERE `team` NOT IN(SELECT `team` FROM leaguemembers WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";
答案 2 :(得分:0)
此更改将停止错误,但不会停止逻辑错误(如果存在)
$query_chamoline = "SELECT * FROM MLB WHERE `team`<>(SELECT TOP 1 `team` FROM leaguemembers WHERE `leagueid`=\"$lid\" AND `active`='Y') ORDER BY `team` ASC";
看着他的答案,我希望Ass3mbler是对的。