我发现了一个问题。当我在数据库中创建新表时,我当然想显示其中的表。但是如果我在数据库内部创建另一个表。然后我的输出突然增加(例如,创建了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>";
}
}
谢谢。
答案 0 :(得分:0)
您有一个嵌套的while
循环。内部while
循环以HTML显示数据库表,外部while
循环遍历每个表。
因此,如果您有两个表,则外循环有两个迭代,内循环有两个迭代
您的显示循环应该只运行一次。您可以通过使用联接将查询合并为一个查询来解决此问题。无论如何,这被认为是更好的做法。
不幸的是,我不知道您的列或表的名称,因此我无法帮助您编写一个。但是我建议使用某种INNER JOIN
。
或者,如果您不关心最佳实践,则可以删除内部循环并仅使用mysqli_fetch_row
提取数据。您的显示代码将被移到外循环中。