我是PHP的新手并且不熟悉它的许多规则,所以这可能是一个愚蠢的问题。
我有一个数据库,顶级类别和子类别合并为一个表。我想先打印出所有顶级类别,然后打印出与该类别相关的子类别。
这是我的代码:
<?php
session_start();
include_once "/mysqli_connect.php";
$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'");
mysqli_close($conn);
?>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<div id="wrap" class="animate">
<?php
while ($categories = mysqli_fetch_array($categories0, MYSQLI_ASSOC)) {
$catecory_name = $categories['category'];
echo '
<div class="content">
<div class="content_container no_padding">
<div class="content_container header">
<p>'.$categories['category'].'</p>
</div>
';
$subcategories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'subcategory'");
while ($subcategories = mysqli_fetch_array($subcategories0, MYSQLI_ASSOC)) {
echo $subcategories['category'];
//mysqli_free_result($subcategories0);
}
echo '
</div>
</div>
';
}
?>
</div>
</div>
</body>
</html>
这是连接脚本:
<?php
DEFINE ('DB_USER', '*');
DEFINE ('DB_PASSWD', '*');
DEFINE ('DB_HOST', '*');
DEFINE ('DB_NAME', '*');
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME);
if(!$conn){
die('Database connection error');
}
echo '<!-- Connected to database -->'
?>
它返回以下错误:
Warning: mysqli_query(): Couldn't fetch mysqli
当两个查询都在doctype之上时,一切都很好,但是当第二个查询低于doctype时,就会发生错误。
第一个查询总是运行没有问题,它是第二个返回错误的查询。
我似乎无法弄清楚发生了什么,如果有人可以帮助我,那将是值得赞赏的。
答案 0 :(得分:3)
你忘了关闭你的while循环。检查你需要关闭它的注释。
<?php
$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'");
?>
<!DOCTYPE html>
<?php
while ($categories = mysqli_fetch_array($categories0, MYSQLI_ASSOC)) {// need to close your loop
$catecory_name = $categories['category'];
echo '
<div class="content">
<div class="content_container header">
<p>'.$categories['category'].'</p>
</div>
';
}// close here
$subcategories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'subcategory'");
// The above line is where the error occurs
while ($subcategories = mysqli_fetch_array($subcategories0, MYSQLI_ASSOC)) {
echo $subcategories['category'];
}
?>
<强>已更新强>
从顶部删除关闭连接,因为在它之后您的查询将不会执行。连接关闭后,您的连接变量将消失。
<?php
session_start();
include_once "/mysqli_connect.php";
$categories0 = mysqli_query($conn, "SELECT * FROM categories WHERE type = 'category'");
?>
答案 1 :(得分:0)
今天我已经解决了同样的问题。但是你在代码中犯了一些错误。
你是触发器选择语句:
请参阅。您现在正在使用mysqli_close($ conn);
关闭连接然后在while循环中获取数据。如果连接已关闭,那么php如何从mysql表中获取数据?
删除mysqli_close($ conn);声明和运行。
在最后一行中,您可以输入此代码。完成所有操作后。