php - MySQL 查询仅循环一次

标签 php jquery mysql

我的 php 函数仅检索并回显一条信息。由于我添加了 30 次限制,因此它应该使用不同的信息集回显 30 次。

我尝试编辑的网页位于以下位置: http://rocketleaguelobby.com/?key=65d9c17e957870ee15161959b2c1dedb&p=/matches

My PHP Code:

<?php
// Connect to the database //
require_once($_SERVER['DOCUMENT_ROOT'].'/inc/dbconnect.php');

// Send the Query //
$query = "SELECT * FROM  `bets` WHERE `public` = '1' ORDER BY `betTime` LIMIT 0 , 30";
$result = mysqli_query($connection, $query);

if (mysqli_num_rows($result) == 0) {
    // If no results were found //
    echo '<span style="font-style: italic;opacity: 0.8;">No Bet History Found</span>';
} else {
    // Echo each bet history found //
    while($bet = mysqli_fetch_assoc($result)) {
        // For every bet, get info about the user //
        $query = "SELECT `steamName`, `steamAvatar` FROM `users` WHERE `steamID` = '".$bet['steamID']."' LIMIT 1";
        $result = mysqli_query($connection, $query);
        while ($user = mysqli_fetch_assoc($result)) {
            $query = "SELECT `teamShort` FROM `teams` WHERE `id` = '".$bet['betTeam']."' LIMIT 1";
            $result = mysqli_query($connection, $query);
            $betTeam = mysqli_fetch_assoc($result);
            $timeAgo = time() - $bet['betTime'];
            if ($timeAgo < 60) {
                // Seconds //
                if ($timeAgo >= 2) {
                    $timeAgo .= " Seconds Ago";
                } else {
                    $timeAgo .= " Second Ago";
                };
            } elseif ($timeAgo >= 60 & $timeAgo < 3600) {
                // Minutes //
                $timeAgo = round($timeAgo / 60);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Minutes Ago";
                } else {
                    $timeAgo .= " Minute Ago";
                };
            } elseif ($timeAgo >= 3600 & $timeAgo < 86400) {
                // Hours //
                $timeAgo = $timeAgo / 60;
                $timeAgo = round($timeAgo / 60);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Hours Ago";
                } else {
                    $timeAgo .= " Hour Ago";
                };
            } elseif ($timeAgo >= 86400 & $timeAgo < 604800) {
                // Days //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = round($timeAgo / 24);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Days Ago";
                } else {
                    $timeAgo .= " Day Ago";
                };
            } elseif ($timeAgo >= 604800 & $timeAgo < 2628000) {
                // Weeks //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 24;
                $timeAgo = round($timeAgo / 7);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Weeks Ago";
                } else {
                    $timeAgo .= " Week Ago";
                };
            } elseif ($timeAgo >= 2628000) {
                // Months //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 24;
                $timeAgo = $timeAgo / 365;
                $timeAgo = round($timeAgo * 12);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Months Ago";
                } else {
                    $timeAgo .= " Month Ago";
                };
            };
            echo '<div class="feed-post"><a href="http://steamcommunity.com/profiles/'.$bet['steamID'].'"><div class="steam-img" style="background-image: url('.$user['steamAvatar'].');"></div><span class="steam-name" title="'.$user['steamName'].'">'.$user['steamName'].'</span></a> bet <span class="bet-amount">$'.$bet['betAmount'].'</span> on <span class="bet-on">'.$betTeam['teamShort'].'</span><br><span class="bet-time">'.$timeAgo.'</span></div>';
        };
    };
};
mysqli_close($connection);
?>

我的 JavaScript/jQuery 代码:

$("#betHistory").load('/inc/getBets.php');

我正在尝试获取之前的 30 个投注,您应该可以在我发送的网站链接上看到这些投注。

现在,当数据库中已有多个投注时,它只会回显 1 个先前的投注。

最佳答案

您确实为每个查询使用了$result。通过为每个查询使用单独的变量,您的问题将得到解决。

我根据以下内容更新了您的代码:

<?php
// Connect to the database //
require_once($_SERVER['DOCUMENT_ROOT'].'/inc/dbconnect.php');

// Send the Query //
$query = "SELECT * FROM  `bets` WHERE `public` = '1' ORDER BY `betTime` LIMIT 0 , 30";
$betsResult = mysqli_query($connection, $query);

if (mysqli_num_rows($betsResult) == 0) {
    // If no results were found //
    echo '<span style="font-style: italic;opacity: 0.8;">No Bet History Found</span>';
} else {
    // Echo each bet history found //
    while($bet = mysqli_fetch_assoc($betsResult)) {
        // For every bet, get info about the user //
        $query = "SELECT `steamName`, `steamAvatar` FROM `users` WHERE `steamID` = '".$bet['steamID']."' LIMIT 1";
        $usersResult = mysqli_query($connection, $query);
        while ($user = mysqli_fetch_assoc($usersResult)) {
            $query = "SELECT `teamShort` FROM `teams` WHERE `id` = '".$bet['betTeam']."' LIMIT 1";
            $teamsResult = mysqli_query($connection, $query);
            $betTeam = mysqli_fetch_assoc($teamsResult);
            $timeAgo = time() - $bet['betTime'];
            if ($timeAgo < 60) {
                // Seconds //
                if ($timeAgo >= 2) {
                    $timeAgo .= " Seconds Ago";
                } else {
                    $timeAgo .= " Second Ago";
                };
            } elseif ($timeAgo >= 60 & $timeAgo < 3600) {
                // Minutes //
                $timeAgo = round($timeAgo / 60);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Minutes Ago";
                } else {
                    $timeAgo .= " Minute Ago";
                };
            } elseif ($timeAgo >= 3600 & $timeAgo < 86400) {
                // Hours //
                $timeAgo = $timeAgo / 60;
                $timeAgo = round($timeAgo / 60);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Hours Ago";
                } else {
                    $timeAgo .= " Hour Ago";
                };
            } elseif ($timeAgo >= 86400 & $timeAgo < 604800) {
                // Days //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = round($timeAgo / 24);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Days Ago";
                } else {
                    $timeAgo .= " Day Ago";
                };
            } elseif ($timeAgo >= 604800 & $timeAgo < 2628000) {
                // Weeks //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 24;
                $timeAgo = round($timeAgo / 7);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Weeks Ago";
                } else {
                    $timeAgo .= " Week Ago";
                };
            } elseif ($timeAgo >= 2628000) {
                // Months //
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 60;
                $timeAgo = $timeAgo / 24;
                $timeAgo = $timeAgo / 365;
                $timeAgo = round($timeAgo * 12);
                if ($timeAgo >= 2) {
                    $timeAgo .= " Months Ago";
                } else {
                    $timeAgo .= " Month Ago";
                };
            };
            echo '<div class="feed-post"><a href="http://steamcommunity.com/profiles/'.$bet['steamID'].'"><div class="steam-img" style="background-image: url('.$user['steamAvatar'].');"></div><span class="steam-name" title="'.$user['steamName'].'">'.$user['steamName'].'</span></a> bet <span class="bet-amount">$'.$bet['betAmount'].'</span> on <span class="bet-on">'.$betTeam['teamShort'].'</span><br><span class="bet-time">'.$timeAgo.'</span></div>';
        };
    };
};
mysqli_close($connection);
?>

关于php - MySQL 查询仅循环一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579194/

相关文章:

javascript - 如何获取 JS 提示框的值,然后将其传递给 PHP 并保存在数据库中?

mysql - 查找表中的类别数

sql - InnoDB 和为表创建关系 - 一个不会加入

javascript - 使用表单动态更改地址栏中的 URL

php - 使用ajax加载html,但在加载之前隐藏内容

javascript - Node.js - 安装后无法使用 jQuery

sql - mysql选择以 future 记录的存在为条件

php - 将数组拆分为 N 个数组 - PHP

php - SQL INSERT INTO SELECT 语句

jquery - 等高插件未计算正确的高度