2016-03-15 212 views
-2

我想遍歷我的玩家表,併爲每個玩家運行下面的代碼,我可以使用下面的代碼或者使用「else」這個錯誤的選項,我需要它運行所有的if語句查看是否匹配,然後根據需要更新數據庫。基本上我需要知道的是我在正確的軌道上,或者我應該看看使用do,而foreach,else,elseif,switch等。下面的代碼僅僅是示例。試圖理解這個理論。循環訪問數據庫

<?php 
$getresult = $conn->query('SELECT id FROM users'); 
while ($getrow = mysqli_fetch_array($getresult); { 
    $player = $getrow['id']; 

$result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC"); 
$row = $result->fetch_array(); 
$row_count = mysqli_num_rows($result); 

if ($row_count...) { 


}else{ 

    if ($row_count...) { 

    }else{ 

     if() { 

     }else{ 
    } 
//SQL update statement would go here.. 
} 
+0

看起來像一個_Do it for me_問題。 VTC – RiggsFolly

+0

有點明智的代碼縮進也會對理解代碼有很大的幫助。更重要的是調試其中的明顯錯誤 – RiggsFolly

+0

因此,我們希望根據是否存在更少或更多的20行來計算最低5分或最低10分的總和。或者,如果少於10分,我們什麼也不做。是對的嗎 ? –

回答

0

你可以做類似SELECT id FROM playersTable然後在while環取player_id然後移動代碼的其餘部分是循環內。那是你在找什麼或者我錯過了什麼?

// $player = $_SESSION['id']; 
$playersResult = $conn->query('SELECT id FROM playersTable'); 
while ($playersRow = mysqli_fetch_array($playersResult); { 
    $playerId = $playersRow['id']; 

    $result = $conn->query("SELECT * FROM scores WHERE player_id='$playerId' ORDER by points ASC"); 
    $row = $result->fetch_array(); 
    $row_count = mysqli_num_rows($result); 

    if ($row_count >= 20) { // checks that at least 10 rows available 
     $result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 10"); // select 10 lowest points 
     while ($row = mysqli_fetch_array($result)) { 
      $total = array($row['points']); 
      $sum = array_sum($total); 
      echo $sum; 
     } 
    } 
    else if ($row_count>=10) { // checks that at least 10 rows available 
     $result = $conn->query("SELECT points FROM scores WHERE player_id='$playerId' ORDER by points ASC LIMIT 5"); // select 5 lowest points 
     while ($row = mysqli_fetch_array($result)) { 
      $total = array($row['points']); 
      $sum = array_sum($total); 
      echo $sum; 
     } 
    } 

    //SQL update statement would go here.. 
} 

您還可能要檢查你的總和邏輯,沒有看到你的表結構,我不認爲array_sum會做你想要什麼。您可以使用SQL SUM()爲您進行計算。

+1

更多評論而非答案!謹防downvote – RiggsFolly

+0

感謝您的支持,我剛開始貢獻。有沒有這種東西的參考? – MajicBob

+0

謝謝,不要擔心這筆款項,因爲我已經收到了相關幫助,並已相應更新,現在工作正常。所以基本上我可以使用while語句循環遍歷用戶表,這會將每個找到的用戶標識應用於其中的if語句? –