MySQLi错误-两次相同的输出

时间:2018-08-14 17:56:55

标签: php html css mysqli

我发现了一个问题。当我在数据库中创建新表时,我当然想显示其中的表。但是如果我在数据库内部创建另一个表。然后我的输出突然增加(例如,创建了1个表,创建了第二个表。尽管我的数据库中没有4个表,但现在网站上总共显示了4个表)。

有人可以修复代码并解释吗?

            $result = mysqli_query($conn, "SHOW TABLES");
      while($tableName = mysqli_fetch_array($result))
        {

                $table = $tableName[0];

                $result2 = mysqli_query($conn, "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'd197243_games'");

                $query = "SELECT COUNT(*) FROM `".$table."`";
                $result3 = mysqli_query($conn, $query);
                $rows = mysqli_fetch_row($result3);

                $querys = "SELECT * FROM `".$table."` ORDER BY id DESC LIMIT 1";
                $resulty = mysqli_query($conn, $querys);

                $rowsy = mysqli_fetch_row($resulty);

            while($row2 = mysqli_fetch_assoc($result2))
      {

    //select * from table limit 1;
                $p = $row2[0];
                $s = $rows[0];
                $l = $rowsy[1];
                        echo "<div class='discussionTable'>
                            <div class='dcolumn' style='width: 60%; position: absolute; padding-left: 10px;'>
                                <b><h3 style='padding: 15px;'><a href='discussion_gaming_showarticle.php?sid=$table' style='color: white'>$table</a></b><br><p style='font-size: 13px'>Author: $p</p></h3>
                            </div>
                            <div style='padding-top: 10px;'>
                            <div class='dcolumn' style='width: 30%; float: right;'>
                                <p style='padding: 15px; line-height: 0px'>Total comments: $s</p>
                                <p style='padding-left: 15px; padding-top: 0px; line-height: 0px'>Last comment by: $l</p>
                            </div>
                            </div>
                        </div>";
            }
       }

谢谢。

1 个答案:

答案 0 :(得分:0)

您有一个嵌套的while循环。内部while循环以HTML显示数据库表,外部while循环遍历每个表。

因此,如果您有两个表,则外循环有两个迭代,内循环有两个迭代 外循环,这意味着内循环总共有四个迭代,因此有四个表正在显示。

您的显示循环应该只运行一次。您可以通过使用联接将查询合并为一个查询来解决此问题。无论如何,这被认为是更好的做法。

不幸的是,我不知道您的列或表的名称,因此我无法帮助您编写一个。但是我建议使用某种INNER JOIN

或者,如果您不关心最佳实践,则可以删除内部循环并仅使用mysqli_fetch_row提取数据。您的显示代码将被移到外循环中。