为什么我的php脚本没有显示mysql中的所有数据?

为什么我的php脚本没有显示mysql中的所有数据?,php,mysql,Php,Mysql,我有一个php脚本,可以更改特定用户的TeamSpeak组。 为了获得一点视觉效果,我添加了一个表,这样我可以看到用户应该获得哪些组 我的整个php脚本: <?php date_default_timezone_set("Europe/Berlin"); require ("config.php"); require ("groups.php"); include ("datenbank.php"); require_once("libraries/TeamSpeak3/TeamSpe

我有一个php脚本,可以更改特定用户的TeamSpeak组。 为了获得一点视觉效果,我添加了一个表,这样我可以看到用户应该获得哪些组

我的整个php脚本:

<?php
date_default_timezone_set("Europe/Berlin");

require ("config.php");
require ("groups.php");
include ("datenbank.php");

require_once("libraries/TeamSpeak3/TeamSpeak3.php");

$ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=9987");


$user_check_confirmed = "SELECT * FROM Users WHERE TSUUIDconfirmed = '1'";
$result = mysqli_query($db, $user_check_confirmed);



if (mysqli_num_rows($result) > 0) {
  while($row = mysqli_fetch_assoc($result)) {
      if($row['MainSteamGroup'] == '1' || $row['vip'] == '1'){

            echo '<table border="1">';
                            echo '<thead>';
                                echo '<tr class="table-head">';
                                    echo '<th class="column1">Username</th>';
                                    echo '<th class="column2">Rocket League</th>';
                                    echo '<th class="column3">CS:GO</th>';
                                    echo '<th class="column1">FACEIT</th>';
                                echo '</tr>';
                            echo '</thead>';
                            echo '<tbody>';
              while($fetch = mysqli_fetch_assoc($result)) {
                echo "<tr>";
                  echo '<td class="column1">' . $fetch['Username'] . '</td>';
                  echo '<td class="column2">' . $fetch['RLHighestRank'] . '</td>';
                  echo '<td class="column3">' . $fetch['CSGOMM'] . '</td>';
                  echo '<td class="column1">' . $fetch['FACEITLVL'] . '</td>';
                echo "</tr>";
              }
              echo '</tbody>';
                        echo '</table>';
            echo '<br><br><br>';
        // Rocket League
        if($row['RLHighestRank'] == 'none'){
        } else {
            if($row) {
                if($row['RLHighestRank'] == $row['RLHighestRankSet']){
                }
            }
            if($row) {
                if($row['RLHighestRank'] !== $row['RLHighestRankSet'] && $row['RLHighestRankSet'] !== '0' && strpos($row['activeranks'], 'Rocket League') !== false){
                  try {
                    $client = $ts3_VirtualServer->clientFindDb($row['TeamSpeakUUID'], true);
                      if( $ts3_VirtualServer->serverGroupClientDel($rl[$row['RLHighestRankSet']], $client[0]));
                      if( $ts3_VirtualServer->serverGroupClientAdd($rl[$row['RLHighestRank']], $client[0]));
                      $sql = "UPDATE Users SET RLHighestRankSet='".$row['RLHighestRank']."' WHERE TeamSpeakUUID='".$row['TeamSpeakUUID']."'";
                        if ($db->query($sql) === TRUE) { }
                      } catch(Exception $e) {
                          echo "<br>" . $row['Username'] . " Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; [RocketLeague1] Error Message: <b>". $e->getMessage() ."</b><br>;";
                      }
                  }
                }
            if($row) {
            if($row['RLHighestRankSet'] == '0' && strpos($row['activeranks'], 'Rocket League') !== false ){
              try {
                $client = $ts3_VirtualServer->clientFindDb($row['TeamSpeakUUID'], true);
                  if( $ts3_VirtualServer->serverGroupClientAdd($rl[$row['RLHighestRank']], $client[0]));
                  $sql = "UPDATE Users SET RLHighestRankSet='".$row['RLHighestRank']."' WHERE TeamSpeakUUID='".$row['TeamSpeakUUID']."'";
                    if ($db->query($sql) === TRUE) { }
                  } catch(Exception $e) {
                      echo "<br>" . $row['Username'] . " Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; [RocketLeague2] Error Message: <b>". $e->getMessage() ."</b><br>;";
                  }
            }
          }
       }

    }
  }
为了进行测试,我将数据库中的每个用户都设置为vip。总的来说,我有8个用户,所以所有的用户都应该得到他们的排名

如果我现在打开php站点,我会在den表中看到4个用户,其他用户正在更新排名,那么为什么我的脚本不能正常工作呢?
我的意思是,每个用户都喜欢相同的数据库条目,唯一不同的是名称和等级…

这里的结构有点难以理解。你能展示一些示例数据吗

您有一个重复的while循环,这可能会导致问题。我做了一点清理工作,可能值得一试:

<?php
date_default_timezone_set("Europe/Berlin");

require("config.php");
require("groups.php");
include("datenbank.php");

require_once("libraries/TeamSpeak3/TeamSpeak3.php");

$ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=9987");


$user_check_confirmed = "SELECT * FROM Users WHERE TSUUIDconfirmed = '1'";
$result               = mysqli_query($db, $user_check_confirmed);


if (mysqli_num_rows($result) > 0) {

    echo '<table border="1">';
    echo '<thead>';
    echo '<tr class="table-head">';
    echo '<th class="column1">Username</th>';
    echo '<th class="column2">Rocket League</th>';
    echo '<th class="column3">CS:GO</th>';
    echo '<th class="column1">FACEIT</th>';
    echo '</tr>';
    echo '</thead>';
    echo '<tbody>';

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

        echo "<tr>";
        echo '<td class="column1">' . $fetch['Username'] . '</td>';
        echo '<td class="column2">' . $fetch['RLHighestRank'] . '</td>';
        echo '<td class="column3">' . $fetch['CSGOMM'] . '</td>';
        echo '<td class="column1">' . $fetch['FACEITLVL'] . '</td>';
        echo "</tr>";
    }

    echo '</tbody>';
    echo '</table>';
    echo '<br><br><br>';
// Rocket League
    if (isset($row['RLHighestRank']) && $row['RLHighestRank'] != 'none') {

        if ($row['RLHighestRank'] !== $row['RLHighestRankSet'] && $row['RLHighestRankSet'] !== '0' && strpos($row['activeranks'], 'Rocket League') !== false) {
            try {
                $client = $ts3_VirtualServer->clientFindDb($row['TeamSpeakUUID'], true);
                if ($ts3_VirtualServer->serverGroupClientDel($rl[$row['RLHighestRankSet']], $client[0])) ;
                if ($ts3_VirtualServer->serverGroupClientAdd($rl[$row['RLHighestRank']], $client[0])) ;
                $sql = "UPDATE Users SET RLHighestRankSet='" . $row['RLHighestRank'] . "' WHERE TeamSpeakUUID='" . $row['TeamSpeakUUID'] . "'";
                if ($db->query($sql) === true) {
                }
            }
            catch (Exception $e) {
                echo "<br>" . $row['Username'] . " Fehler!<br/>ErrorID: <b>" . $e->getCode() . "</b>; [RocketLeague1] Error Message: <b>" . $e->getMessage() . "</b><br>;";
            }
        }
        if ($row['RLHighestRankSet'] == '0' && strpos($row['activeranks'], 'Rocket League') !== false) {
            try {
                $client = $ts3_VirtualServer->clientFindDb($row['TeamSpeakUUID'], true);
                if ($ts3_VirtualServer->serverGroupClientAdd($rl[$row['RLHighestRank']], $client[0])) ;
                $sql = "UPDATE Users SET RLHighestRankSet='" . $row['RLHighestRank'] . "' WHERE TeamSpeakUUID='" . $row['TeamSpeakUUID'] . "'";
                if ($db->query($sql) === true) {
                }
            }
            catch (Exception $e) {
                echo "<br>" . $row['Username'] . " Fehler!<br/>ErrorID: <b>" . $e->getCode() . "</b>; [RocketLeague2] Error Message: <b>" . $e->getMessage() . "</b><br>;";
            }
        }
    }
}

查看附带的数据以及删除的任何敏感内容将有助于进一步解决问题。

请在代码中添加错误管理。因此,您可以看到问题所在。通过获取第一行并仅输出一个表头,您将丢失至少一个结果集行。错误步骤1从phpMyAdmin中TsuidConfiged='1'的用户处运行SELECT*,并查看返回了多少行var_dumpmysqli_num_rows$result给出了什么?你可以接受SQL注入,参数化你的查询。为什么所有的无意义的代码像if$db->query$SQL===TRUE{}和if$row['RLHighestRank']='none'{}呢{我想我现在设法让它工作了,因为我现在只有一个while$row…函数。这看起来很复杂,因为我不了解TeamSpeak php框架。因此,如果用户在['RLHighestRank']中的排名与他在TeamSpeak['RLHighestRankSet']中的排名不同,然后它应该将其更改为RLHighestRank,并将RLHighestRankSet设置为他现在在TeamSpeak上获得的实际级别。很难理解,但我找到了最简单的解决方案
        if ($row['RLHighestRank'] !== $row['RLHighestRankSet'] && $row['RLHighestRankSet'] !== '0' && strpos($row['activeranks'], 'Rocket League') !== false) {