我有以下代碼來顯示發送,接收和接受簡單的朋友系統的邀請。雖然循環的順序基於關聯數組php?
while ($friend = $q -> fetch(PDO::FETCH_ASSOC)) {
if ($friend['id'] == $user['id'] && $friend['friendAccept'] == 0) echo '<p>You have sent a request to be <a href="http://www.n.com/viewaccount?id=' . $friend['withID'] . '">' . $friend['username'] . '\'s</a> friend.</p>';
if ($friend['withID'] == $user['id'] && $friend['friendAccept'] == 0) echo '<p>You have recieved a request from <a href="http://www.n.com/viewaccount?id=' . $friend['withID'] . '">' . $friend['username'] . '</a>.</p>';
if ($friend['id'] == $user['id'] && $friend['friendAccept'] == 1) echo '<p>You are friends with <a href="http://www.n.com/viewaccount?id=' . $friend['withID'] . '">' . $friend['username'] . '</a>.</p>';
}
它會顯示你有什麼朋友,你發送了哪些朋友請求,以及接收了哪些朋友請求。我從一個mysql查詢中獲取所有這些信息。但唯一的問題是,它們並不是按順序進行的,因爲while循環在列表中迭代並執行它應該執行的任何操作。
有沒有辦法讓他們仍然只使用一個查詢?我的意思是指在一個列表中收到的所有請求,在一個列表中發送的請求以及在一個列表中的朋友。因爲它是在他們按順序他們從桌上被拉出的分鐘。
查詢...
$q = $dbc -> prepare("SELECT social.*, accounts.username FROM social INNER JOIN accounts WHERE social.withID = accounts.ID AND (social.id = ? OR social.withID = ?) AND type = 'friend'");
$q -> execute(array($user['id'], $user['id']));
什麼*是*正確的順序?你可以顯示查詢嗎? – JJJ
好吧,現在編輯我的問題... – NovacTownCode
請注意,'PDOStatement'實現了['Traversable'](http://php.net/Traversable)接口,因此您可以使用'foreach'而不是' while'。它不會影響結果的順序,但更具可讀性(「對於序列的每個元素」而不是「當某些條件成立時」更好地描述了循環的作用)。 – outis