簡體   English   中英

在循環讀取行時的PHP MySQL

[英]Php mysql while loop fetching rows

我想從數據庫中獲取“ Experience行,這將根據玩家的體驗來升級玩家,即,該級別等於體驗÷100。

例如,如果玩家的經驗是100,則他的等級為1。如果玩家的經驗是200,則他的等級為2。

這是我的代碼:

<?php
$con = mysqli_connect("localhost", "username", "password", "DB");

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con, "SELECT * FROM playerdata ORDER BY Bank DESC LIMIT 9999");

while($row = mysqli_fetch_array($result)) {

    $row['Unique_ID']; // ?
    echo "<br>";

    $xp = $row['Experience'];

    if ($xp == '1') {
        echo 'You\'re level one';
    }

    if ($xp == '2') {
        echo 'You\'re level 2';
    }
}

mysqli_close($con);
?>

我還不知道如何使用while循環來處理while語句。

如何計算所有用戶的級別?

如果您想根據經驗來計算等級,那么類似的問題可能是您的問題的答案:

<?php

// This simulates your database.
$players = [
    ['Unique_ID' => 1, 'Experience' => '100'],
    ['Unique_ID' => 2, 'Experience' => '150'],
    ['Unique_ID' => 3, 'Experience' => '200'],
    ['Unique_ID' => 4, 'Experience' => '299'],
    ['Unique_ID' => 5, 'Experience' => '320'],
];

foreach ($players as $player) {

    // Basically, you want to get the level by dividing the experience by 100,
    // then rounding it down with the function floor(). No need for another loop.
    $level = floor($player['Experience'] / 100);

    echo 'Player #', $player['Unique_ID'], ' is level ', $level, "\n";

}

輸出:

玩家#1是1級

玩家#2是1級

玩家#3是2級

玩家#4是2級

玩家#5是3級

現在,如果您想為所有用戶更新級別,那么我建議以下之一:

  • 使用cron作業(使用上述方法)來計算所有用戶的級別並更新數據庫。
  • 當用戶的體驗發生變化時,請更新他們的級別。

暫無
暫無

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

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