0

mysql_fetch_arrayのwhile関数に問題があります。私はステートメントの後に何を使用するかを実験し、今では以前よりもうまく機能しています。私はお互いの中でたくさんのループを実行できると思っていましたが、明らかにできませんでした。現在、最初の2つのステートメントには中括弧があり、他のステートメントには中括弧がありません。これはコードではっきりとわかります。

しかし、私が今持っていることは、各ステートメントの後に複数の変数があると、エコーなどで2番目の変数が機能しなくなることを意味します。変数は後でレイアウトするのがはるかに簡単になるため、配列の使用を避けようとしています。ここで何が起こっているのかわからない。私は通常、すべてのステートメントの後に中括弧を使用しますが、それによって全体が冗長になります。すべての変数を機能させ続けるにはどうすればよいですか?私はまだ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;

                         }
                         }  
4

1 に答える 1

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ステートメントの後に命令が1つしかない場合にのみブラケットが必要ないため、エラーが発生します。

あなたと同じ

while ($sessions = mysql_fetch_array($fetchSessions))

角かっこがない場合、whileに関連する命令が複数ある場合はそうすることができません。

MySQLリクエストに複数の回答があることがわかっている場合にのみ必要です。このユーザー名を持つユーザーは1人だけである可能性があるため、しばらくは必要ありません。

これはすべてphpとmysqlの開発の基本であり、単純なグーグル検索で答えが得られます。phpとmysqlの基本に関するチュートリアルをもっと読む必要があるかもしれません。

于 2012-07-29T17:41:35.833 に答える