0

我在使用 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;

                         }
                         }  
4

1 回答 1

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))

没有括号,如果有多个与 while 相关的指令,则不能这样做。

仅当您知道 MySQL 请求中有多个答案时才需要。由于可能只有一个具有此用户名的用户,因此您不需要一段时间。

所有这些都是php和mysql开发的基础知识,一个简单的google搜索就会给你答案。我认为您可能需要阅读更多有关 php 和 mysql 基础知识的教程。

于 2012-07-29T17:41:35.833 回答