我剛剛爲一個頁面的基本輪廓寫了一些代碼。它用於我運行的遊戲,但是看着代碼,我覺得我已經寫錯了順序,而且我執行的查詢比我需要的還要多。PHP查詢的邏輯順序
$query = mysql_query("SELECT * FROM bodyguards WHERE username='$u'"); if($bg = mysql_fetch_assoc($query)) { // if you have a bg if($bg[status] == "active") { echo "your bodyguard is $bg[bodyguard], kick him?"; } else { echo "invite a bg?"; } } else { $query = mysql_query("SELECT * FROM bodyguards WHERE bodyguard='$u' AND status='active'"); if($bg = mysql_fetch_assoc($query)) { // if you are a bg echo "you are the bodyguard of $bg[username]"; } else { //otherwise check if anyone has invited you $query = mysql_query("SELECT * FROM bodyguards WHERE bodyguard='$u' AND status='invited'"); while($temp = mysql_fetch_assoc($query)) { echo "$temp[username] has invited you to be their bodyguard, accept or decline?"; } } }
我只使用一個數據庫表。如果玩家1擁有確認的保鏢(玩家2),該行將如下所示:
username => player1, bodyguard => player2, status => active。
這裏有人會用不同的方式編寫代碼嗎?
我還需要循環顯示,如果玩家有一個以上的邀請。 – Juddling 2010-11-18 20:16:46
$ u是查看該頁面的玩家的用戶名,對不起,我忘了提及。是的,我最近移動的服務器和新的PHP conf開始顯示負載的通知,因爲我習慣於從未引用我的數組鍵:// – Juddling 2010-11-18 20:18:15
@Juddling:對不起,我沒有看到那裏的最後一個循環。但是,您仍然可以在單個查詢中完成該操作,因爲整個結果已經在$ query中加載。你只需要繼續執行'mysql_fetch_assoc'來獲取下一行,依此類推。 – netcoder 2010-11-18 20:27:28