2012-07-29 2 views
0

mysql_fetch_array의 while 함수에 문제가 있습니다. 나는 성명서 이후에 무엇을 사용해야하는지 실험했으며, 지금 내가 한 것은 이전보다 잘 작동한다. 나는 서로의 내부에 루프를로드 할 수 있다고 생각했지만 명확하게는 그렇지 않았습니다. 저는 현재 처음 두 문장에 중괄호가 있고 다른 문장에는 중괄호가 없습니다. 코드에서이를 분명하게 볼 수 있습니다.mysql_fetch_array의 여러 while 문이 예기치 않은 오류를 일으킴

그러나 이제는 각 문 다음에 여러 변수가 있으면 두 번째 변수가 에코 될 때 작동하지 않게된다는 것을 의미합니다. 배열을 변수로 사용하는 것을 피하려고하는 것은 이후에 훨씬 쉽게 레이아웃 할 수 있습니다. 여기서 무슨 일이 일어나고 있는지 확실하지 않습니다. 나는 보통 모든 문장 다음에 중괄호를 사용하지만 모든 것이 중복되게 만들었습니다. 모든 변수가 작동하도록하려면 어떻게해야합니까? 나는 PHP와 아직 훌륭하지 않으며 지금까지 모든 도움을 주셔서 감사합니다!

나는 mysqli를 사용하고 있어야한다는 것을 알고 있기 때문에 장래의 목적으로 주위를 어지럽히고있다. 나는 최근에 mysqli를 배웠으므로 당분간 mysql을 더 편하게 느낄 수 있기 때문에 mysql을 사용하고 있었다. 여기

어쨌든 코드 : 모든

//fetch favourited artist(s) 
        $fetchartistFavourite = mysql_query("SELECT * FROM artistfavourites WHERE username = '$username' AND password = '$pass';")or die(mysql_error()); 
        while ($artistFavourite = mysql_fetch_array($fetchartistFavourite)){ 
        $favouritedArtist = $artistFavourite['artistname']; 
        $favouritedArtistUrl = $artistFavourite['artisturl']; 

        //fetch favourite track(s) 
        $fetchtrackFavourite = mysql_query ("SELECT * FROM trackfavourites WHERE username = '$username' AND password = '$pass'")or die(mysql_error()); 
        while ($trackFavourite = mysql_fetch_array($fetchtrackFavourite)){ 
        $favouritedTrack = $trackFavourite['artistname']; 
        $favouritedTrackUrl = $trackFavourite['artisturl']; 

         //Get news from favourited artist(s) 
          //Get updates to bio 
          $fetchupdatedBio = mysql_query ("SELECT * FROM members WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($updatedBio = mysql_fetch_array($fetchupdatedBio)) 
          $updatedBio = $updatedBio['bio']; 

          //Get updates to profile pic 
          $fetchupdatedProfile = mysql_query ("SELECT * FROM members WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($updatedProfile = mysql_fetch_array($fetchupdatedProfile)) 
          $updatedProfile = $updatedProfile ['image1']; 

          //Get any new pictures 
          $fetchPic = mysql_query ("SELECT * FROM pictures WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($pic = mysql_fetch_array($fetchPic)) 
          $pic = $pic['picurl']; 

          //Get any new tracks 
          $fetchTracks = mysql_query ("SELECT * FROM tracks WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($tracks = mysql_fetch_array($fetchTracks)) 
          $trackurl = $tracks['trackurl']; 
          $trackname = $tracks['trackname']; 

          //Get any new gigs 
          $fetchGigs = mysql_query ("SELECT * FROM gigs WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($gigs = mysql_fetch_array($fetchGigs)) 


          //arrange gig data into format to be echoed 
          $gig = $favouritedArtist.' is playing for the gig ' .$gigs['gigname'].' at ' .$gigs['venue'].' on the '.$gigs['day'].'th of '.$gigs['month'].', '.$gigs['year']; 


          //Get any new sessions 
          $fetchSessions = mysql_query ("SELECT * FROM sessions WHERE artistname = '$favouritedArtist'")or die(mysql_error()); 
          while ($sessions = mysql_fetch_array($fetchSessions)) 

          $sessionName = $sessions ['title']; 

            //Get new tracks from favourited tracks(s)if the artist has not been favourited 
            $fetchnewTrack = mysql_query ("SELECT * FROM tracks WHERE artistname = '$favouritedTrack' AND artistname !='$favouritedArtist'")or die(mysql_error()); 
            while ($newTrack = mysql_fetch_array($fetchnewTrack)) 
            $trackname2 = $newTrack['trackname']; 



             //asign all variables into an 
             echo $trackname; 

         } 
         } 
+0

정확히 무엇이 문제였습니까? 그리고 mysqli를 사용해서는 안된다. 당신은 PDO – karka91

+0

을 사용해야합니다. 조금 질문을 바꾸었지만 기본적으로 나는 무슨 일이 일어나는지 알지 못합니다. 그러나 여러 while 서술문이 변수 작업을 멈추게하는 것 같습니다. 나는 크게 PDO 대 mysqli를 연구했으며 mysqli는 프로젝트를위한 더 나은 옵션이었다. –

답변

2

첫째, 당신은 확실히 SELECT *하지 않으려 고한다, 그러나 다만 내용은 당신이 필요합니다. 처럼 : 당신에

SELECT picurl FROM pictures WHERE artistname = '$favouritedArtist' 

대신

SELECT * FROM pictures WHERE artistname = '$favouritedArtist' 

: 오류가 있습니다

while ($tracks = mysql_fetch_array($fetchTracks)) 
$trackurl = $tracks['trackurl']; 
$trackname = $tracks['trackname']; 

하나의 명령은 이후에있을 때만 당신은 괄호를 필요로하지 않기 때문에 while 진술. 어떤 괄호와

while ($sessions = mysql_fetch_array($fetchSessions)) 

, 당신은 동안과 관련된 하나 개 이상의 명령이있는 경우 그렇게 할 수 없습니다.

MySQL 요청시 복수 응답이있을 때만 필요합니다. 이 사용자 이름을 가진 한 명의 사용자 만있을 수 있으므로 잠시 시간이 필요하지 않습니다.

이 모든 것은 PHP 및 MySQL 개발의 기초이며, 간단한 Google 검색을 통해 답변을 얻을 수 있습니다. PHP와 MySQL의 기초에 대한 튜토리얼을 더 읽어야 할 필요가 있다고 생각합니다.

관련 문제