php - 警告 : mysqli_query(): Couldn't fetch mysqli

标签 php mysql 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

当两个查询都在文档类型之上时,一切都很好,但是当第二个查询在文档类型之下时,就会发生错误。

第一个查询始终运行没有问题,第二个查询返回错误。

我似乎无法弄清楚发生了什么,如果有人能帮助我,我将不胜感激。

最佳答案

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


?>

关于php - 警告 : mysqli_query(): Couldn't fetch mysqli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218188/

相关文章:

php - 使用纬度和经度获取时区?

javascript - Jquery .parent 在 DOM 中走得太远

php - Google_Service_AnalyticsReporting_DimensionFilterClause中的多个过滤器

php - 如何使用 Fabrik(joomla 组件)表单连接到数据库表并搜索匹配并返回结果?

php mysql 查询 : multiple drop down options

php - SmartyWhere子句不过滤数据

php - Phing,调用命令将其输出放入属性中

PHP/MySQL : mysqli prepared statement insert same value multiple times within for loop

javascript - 使用 AJAX 在点击时执行简单的 mysqli 查询

php - 使用 PHP MySQLi 从 Google Cloud App Engine 连接到 Cloud SQL 不起作用