簡體   English   中英

PHP mysql使用ORDER BY DESC對行進行排序

[英]PHP mysql sorting the row with using ORDER BY DESC

我正在使用UNITY創建游戲,這是PHP bla bla ...你有一些小東西需要弄清楚才能排序。 關鍵是-這是我需要對玩家進行分類的游戲。 例如,如果玩家3離開/離開游戲,那么玩家3的uid 2

那么我們只有玩家1玩家2和玩家4他們擁有0 1 3

player1 = 0
player2 = 1
player3 = 2
player4 = 3

所以我需要做的是整理出來,所以如果player3 left uid 2我需要進行整理,它將以這種方式進行

player4 = 3
player2 = 1
player1 = 0

我使用了sort( $row = mysql_fetch_array( $sql ) )但是我只得到了錯誤,我也使用了sort( $row['players'] ); $row['players']這是0 1 2 3但是它沒有排序我需要的東西,但它的輸出是

player1 = 3
player2 = 1
player4 = 0

這是錯誤的,對於現在的玩家和當前的玩家而言,這並不相等

幫助我,什么應該是正確的代碼

我希望每個人都明白我需要在這里解決的問題。

我也嘗試使用ORDER BY播放器DESC,但效果不佳。 我知道還有更多指定順序。

我還有一些解釋,這是我需要解決的順序/排序。

GameID   Turn   
3         2
6         1
7         2
5         2
8         0
9         1

return should be { for example GameID 6 is TURN for the Game or Left in the Game }
GameID   Turn
6         1
9         1
8         0
3         2
5         2
7         2

another example { for example GameID 7 is TURN for the Game or Left in the Game }
GameID   Turn
7         2
3         2
5         2
8         0
9         1
6         1

這是我的查詢

$email_val = email@sample.com';

if( $email_val != null ){
    $sqlCheckError = mysql_query( "SELECT * FROM game WHERE player1 = '".$email_val."' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' " ) or die ( mysql_error() );
    $gameCheck = mysql_fetch_array($sqlCheckError);
    // CHECK FOR GAMEID ERROR
    $gameIDCheck = $gameCheck['gameID'];
    // EMAIL EQUAL TO THE CURRENTTURN WHERE ID
    $sql = mysql_query( "SELECT * FROM game WHERE player1 = '" . $email_val . "' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' " ) or die ( mysql_error() );
    // FIXED THE SORT OF 
    while ( $row = mysql_fetch_array( $sql ) ) {                
        $p1 = $row['player1'];
        $p2 = $row['player2'];
        $p3 = $row['player3'];
        $p4 = $row['player4'];

        if ($asterisk > 0) {
            echo "*";
        }
        echo $row['gameID'] . '|';
        echo $row['gameStatus'] . '|';

        echo $getNameLower->_NAME_LOWER_PLAYER_ONE_( $p1 );
        echo $getNameLower->_NAME_LOWER_PLAYER_TWO_( $p2 );

        if ( !empty( $p3 ) ){
            echo $getNameLower->_NAME_LOWER_PLAYER_THR_( $p3 );
        } else {
            echo '';
        }
        if ( !empty( $p4) ){
            echo $getNameLower->_NAME_LOWER_PLAYER_FOU_( $p4 );
        } else {
            echo '';
        }

        echo '|' . $row['start'];
        echo '|' . $row['currentTurn'];
        echo '|' . $row['lastWord'];
        echo '|' . $row['lastPlayer'];
        echo '|' . $row['lastPoints'];

        $cur = $row['currentTurn'];
        // CHECK THE CurrentTurn then PUT IT AS PICURL
        if ( $cur == '0' ) { echo $getPIC->purl_1( $p1 ); } 
        elseif( $cur == '1' ) { echo $getPIC->purl_2( $p2 ); }
        elseif( $cur == '2' ) { echo $getPIC->purl_3( $p3 ); }
        elseif( $cur == '3' ) { echo $getPIC->purl_4( $p4 ); }

        $asterisk++;
    }

    if( $gameIDCheck == null ){
        echo '0';           
    }
}
else{
    echo '0';
}

是的,我已經首先想到了這一點。 Order By非常容易對所有內容進行排序。 但是它不會像這樣2 0 1和1 2 0排序,因此,如果我們使用ORDER BY DESC 2 1 0和ASC 0 1 2我希望現在可以清除它

嘗試使用http://www.php.net/manual/zh/function.asort.php保留您的索引關聯。

是的 使用ORDER BY DESC在查詢中執行排序本身,這使工作變得更輕松。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM