2012-07-29 104 views
0

我对mysql_fetch_array的while函数有问题。我已经在声明之后试用了什么,现在我的工作比以前更好。我以为我可以在彼此内部运行一个循环,但显然不是。我现在在前两个语句中有大括号,其他都没有,你可以在代码中清楚地看到。mysql_fetch_array导致意外错误的几个while语句

但是,我现在意味着每个语句之后有多个变量会导致第二个变量在回显时停止工作等。我尝试避免使用数组作为变量,事后布局会更容易。不知道这里发生了什么。我通常在每个陈述后都使用大括号,但这只是使整个事情变得多余。我应该怎么做才能保持所有变量的正常工作?我对PHP并不擅长,并感谢迄今为止的所有帮助!

我只是为了未来的目的而陷入混乱,所以我知道我应该使用mysqli。我最近才学会了mysqli,所以我只是使用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 2012-07-29 17:38:00

+0

我改变了一些问题,但基本上我不知道发生了什么,但似乎有几个while语句停止变量的工作。我对PDO和mysqli以及mysqli进行了大量研究,这是该项目的更好选择 – 2012-07-29 17:42:28

回答

2

首先,你一定要尽量不要选择*,但你只需要的内容。 像:

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 ($sessions = mysql_fetch_array($fetchSessions)) 

没有括号,你不能这样做,如果有一个以上的相关指令时。

虽然只有当你知道在你的MySQL请求中会有多个答案时才需要。由于这个用户名可能只有一个用户,所以你不需要一段时间。

所有这些都是php和mysql开发的基础知识,简单的谷歌搜索会给你答案。 我想你可能需要阅读一些关于php和mysql的基础知识的教程。