2013-04-14 138 views
0

我有问题得到这个工作。我也尝试了对方内部的查询,但它不起作用。有人知道为什么?在查询中查询

$ligan = mysql_query("SELECT leagueId FROM league WHERE leagueName='$leagueName'"); 
$laget = mysql_query("SELECT teamid FROM team WHERE leagueId='$ligan'"); 
$result = mysql_query("SELECT * FROM player WHERE teamId='laget'"); 

这是在哪里打印...

  <?php 
      if(mysql_num_rows($result) == 0){ 
      echo $result; 
      } 
      else{ 
       while($row = mysql_fetch_array($result)){ 
        echo "<tr>"; 
        echo "<td>" . $row['playerName'] . "</td>"; 
        echo "<td>" . $row['birthday'] . "</td>"; 
        echo "<td>" . $row['weight'] . "</td>"; 
        echo "<td>" . $row['height'] . "</td>"; 
        echo "<td>" . $row['madeGoals'] . "</td>"; 

        echo "</tr>"; 


        } 
      } 
       mysql_close($db); ?> 

我得到这个问题:mysql_num_rows()预计参数1是资源,布尔在

给予我相信给立杆一个值 而laget给出了很多。

你能帮忙吗?

+0

什么是错误?请更好地描述你的问题 – rsz

+1

我不知道这是否是一个错字,但在最后一个查询中,你忘记了'laget'变量中的'$'。 – Gerep

+0

是的,这是一个错字!抱歉! – user2280125

回答

0
$result = mysql_query(
    "SELECT * FROM player WHERE teamId IN (
    SELECT teamid from team WHERE leagueId IN (
     SELECT leagueId from league WHERE leagueName='$leagueName' 
    ) 
)" 
); 
0

你不会获取reslts到变量,你只是执行查询。

$result = mysql_query("SELECT leagueId from league WHERE leagueName='$leagueName'");  
$row = mysql_fetch_row($result);  
$result = mysql_query("SELECT teamid from team WHERE leagueId='$row[0]'");  
$row = mysql_fetch_row($result);  
$result = mysql_query("SELECT * FROM player WHERE teamId='$row[0]'"); 

while ($row = mysql_fetch_assoc($result)) { 
    echo $row["name"]; 
    echo $row["surname"];   
} 
+0

嗨,非常感谢。这并没有完全奏效。它只返回了一些球员,并不是所有联盟中的选择... – user2280125

+0

@ user2280125我更新了答案中的代码。您需要从循环中的最后一个结果中获取数据。我的代码打印玩家的名字和姓氏,但是当然应该有你的餐桌的字段。 – zavg

+1

非常感谢! – user2280125

1

的mysql_query()返回一个结果,而不是一个结果本身。您必须从结果集中获取结果。

在此示例中,我检查结果集以确保在访问结果集中的第一个结果之前有结果。

$resultset = mysql_query("SELECT leagueId from league WHERE leagueName='$leagueName'"); 

if(mysql_num_rows($resultset) > 0){ 
    $row = mysql_fetch_assoc($resultset); 
    // access the ID via $row['leagueId'] 
} 
+0

嗨,谢谢!你是什​​么意思,我应该通过$ row ['leagueId']来访问ID。我很新,在这。对不起 – user2280125

+0

在'if'里面,你可以使用'$ row ['leagueId']'来使用任何其他变量。 'echo($ row ['leagueId'])'会显示leagueId,或者你可以用'$ leagueId = $ row ['leagueId']'将值赋给它自己的变量等等。但是,如果你打算在你的问题中做几个查找,使用像Gerep建议的JOIN会给你更清洁和更快的代码。 –

2

我不知道为什么这些问题的答案并不建议你使用JOIN,我认为这是比较容易的工作,并创建它的原因是为了解决像你这样的问题。

是的,你有一个关于mysql_query的PHP错误,因为所有答案都指向了。

我的建议是,了解JOIN

我认为你的代码会是这样的:

SELECT * FROM player 
INNER JOIN team on team.leagueId = league.id 
INNER JOIN league on league.name = '$leagueName' 

JOIN一个尝试,我保证你的代码会更好看,你的生活更容易=)

+1

其他答案有点可怕...我希望这些人实际上不会像这样写SQL ...... –

+0

现在它说mysql_num_rows()期望参数1是资源,在 – user2280125

+0

中给出的布尔值在您的数据库中使用该SQL,它会给你结果或更详细错误(如果有的话)。你用什么来管理你的数据库? – Gerep