【问题标题】:While loop does not stop iterating through arrayWhile 循环不会停止遍历数组
【发布时间】:2019-06-25 22:40:58
【问题描述】:

我有一个 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 循环,但我不知道如何更改其中的条件,如果有人愿意帮助我的话。

【问题讨论】:

  • 问题是查询,这样写它会生成所有这些结果。在phpMyAdmin 或类似的工具中运行它,你会看到
  • 只是transactions 表的bcoz,使用JOIN 会有所帮助。
  • “我面临的问题是我不太擅长 php,语法让我发疯”——我认为语法没有任何问题。你能解释一下你在语法上遇到的具体问题吗?或者,为什么您认为这是句法问题而不是语义问题?
  • 谢谢大家的帮助,如果我的写作侮辱了任何人,我很抱歉 - 这不是我的意图。我只是在努力学习,有时我没有其他人可以求助,只有在线论坛和有帮助的陌生人。这是一个查询 - 我能够找到合适的人来做我想做的事情,这主要归功于@scaisEdge 的回答!

标签: php mysql loops while-loop


【解决方案1】:

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

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

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

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

【讨论】:

  • 这帮助了很多!谢谢好心的先生!
猜你喜欢
  • 2016-06-21
  • 2011-10-30
  • 1970-01-01
  • 2015-12-30
  • 2021-08-18
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多