php
  • mysql
  • 2013-04-14 3 views 0 likes 
    0

    У меня проблемы с тем, чтобы это работало. Я также пробовал запросы внутри eachother, но он не работает. Кто-нибудь знает, почему?Запрос в запросе в запросе

    $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, чтобы быть ресурсом, логический приведены в

    Я считаю, что ligan дает одно значение в то время как лагет дает много.

    Вы можете помочь?

    +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

    Привет, и спасибо! Как вы понимаете, что я должен получить доступ к ID через $ row ['leagueId']. Im очень новый в этом. Извините – user2280125

    +0

    Внутри 'if' вы можете использовать' $ row ['leagueId'] 'так, как вы использовали бы любую другую переменную. 'echo ($ row ['leagueId'])' будет отображать leagueId, или вы можете присвоить значение своей собственной переменной с '$ leagueId = $ row ['leagueId']' и т. д. Однако, если вы собираетесь выполняйте несколько поисков, например, в своем вопросе, используя JOIN, такие как предложенный Gerep, даст вам более чистый и быстрый код. –

    2

    Я не знаю, почему эти ответы не предлагает вам использовать JOIN, я думаю, что это легче работать, и причина она была создана, чтобы решить такие проблемы, как ваши.

    Да, у вас есть ошибка PHP о mysql_query, так как все ответы указаны.

    Мое предложение, узнать о 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 будет ресурсом, boolean задан в – user2280125

    +0

    Используйте этот SQL в вашей базе данных, и он даст вам результаты или более подробную информацию ошибка (если есть). Что вы используете для управления своей базой данных? – Gerep

    Смежные вопросы