首页 > 解决方案 > While 循环不会停止遍历数组

问题描述

我有一个 php 文件,我在其中创建了一个类 Bank - 有 2 个方法 - 第一个产生 5 个用户并在数据库中填充随机事务第二个应该显示用户的余额。

我在网站上搜索过,没有人在这里有这样的例子。

我已经成功连接到数据库并编写了一个(不是一个很好的)查询来从两个表中获取所有数据。

$query = "SELECT * FROM users, transactions";

我面临的问题是我不太擅长 php,语法让我发疯 - 我的 while 循环循环遍历查询产生的结果,但它在遍历所有结果行后并没有停止数组 - 它只是无休止地重复自己。

$connection = mysqli_connect('localhost', 'root', 'root', 'ipromapp', '3306');

class Bank
{
    function balance() 
    {
        global $connection;

        if($connection)
        {
            echo ("Connection online<br>");
        }

        $query = "SELECT * FROM users, transactions";

        $result = mysqli_query($connection, $query) or die(mysql_error());

        echo "<table border='1px'>";
        echo "<tr>";
        echo "<td> ID </td>";
        echo "<td> Name </td>";
        echo "<td> Balance </td>";
        echo "</tr>";

        while($row = mysqli_fetch_array($result))
        {
            $id = $row[0];
            $name = $row[1];
            $balance = $row[2];

            echo "<tr>";
            echo "<td> {$id} </td>";
            echo "<td> {$name} </td>";
            echo "<td> {$balance} </td>";
            echo "</tr>";
        }
        echo "</table>";
    }
}
$bank = new Bank;
$bank->randomize();
$bank->balance();

结果如下(数据库atm中有5个用户)http://prntscr.com/mf6edg

它只是去来去去。

我 100% 是 while 循环,但我不知道如何更改其中的条件,如果有人愿意帮助我的话。

标签: phpmysqlloopswhile-loop

解决方案


您的查询将为第一个表的每一行选择第二个表的所有行(您的选择产生一个笛卡尔积)。

假设您的表通过键关联,例如: user_id 您应该尝试加入

  SELECT * 
  FROM users u 
  INNER JOIN  transactions t  on u.user_id =  t.user_id 

这样,您应该只获得与特定 user_id 相关的交易


推荐阅读