警告:mysqli_query():无法';t获取mysqli


Warning: mysqli_query(): Couldn't fetch mysqli

我是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之下时,就会发生错误。

第一个查询总是毫无问题地运行,第二个查询返回错误。

我似乎不知道发生了什么,如果有人能帮助我,我将不胜感激。

您忘记关闭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'");

?>

今天我分阶段解决了同样的问题。但是,您在代码中没有犯什么错误。

您正在触发选择语句this:

请参阅。您现在正在关闭与mysqli_close($conn(的连接;

然后在while循环中获取数据。若连接已经关闭,那个么php如何从mysql表中获取数据?

只需删除mysqli_close($conn(;语句并运行。

在最后一行,你可以把这个代码放进去。在所有的操作之后。