PHP从数据库生成类别和子类别

时间:2018-02-18 13:13:33

标签: php mysql php-mysqlidb

<?php
$sql="SELECT * FROM categories WHERE parent = 0";
$pquery = $db->query($sql);
?>
<!-- Top NavBar -->
		<nav class="navbar navbar-default navbar-fixed-top">
			<div class="container">
				<a href="index.php" class="navbar-brand">Boutique</a>
				<ul class="nav navbar-nav">
					<?php while($parent = mysqli_fetch_assoc($pquery)) :?>
					<?php 
					$parent_id = $parent['id'];
					$sql2 = "SELECT * FORM categories WHERE parent = '$parent_id'";
					$cquery = $db->query($sql2);
					?>
					<!-- Menu Items -->
					<li class="dropdown">
						<a href="#" class="dropdown-toggle" data-toggle="dropdown">
							<?php echo $parent['category']; ?>
							<span class="caret"></span></a>
						<ul class="dropdown-menu" role="menu">
							<?php while($child = mysqli_fetch_assoc($cquery)) : ?>
							<li><a href="#"><?php echo $child['category'] ;?></a></li>
							<?php endwhile; ?>
						</ul>
					</li>
					<?php endwhile; ?>
				</ul>
			</div>
		</nav>

在此代码中,只执行与父项0相关的第一部分,而与子类别相关的部分不起作用,并且出现以下错误:

  

警告:mysqli_fetch_assoc()期望参数1为mysqli_result,   第24行的C:\ xampp \ htdocs \ e \ includes \ navigation.php中给出的布尔值

我该如何解决? This is the result

2 个答案:

答案 0 :(得分:1)

查询在结果集上返回布尔值。这可能是由于返回的空数据集。有可能出现SQL错误。 您可以在$ pquery和$ cquery之后回显mysqli_error()以检查执行查询时是否有错误。

您使用的是FORM而不是FROM 改变

  

&#34; SELECT * FORM类别WHERE parent =&#39; $ parent_id&#39;&#34;

  

&#34; SELECT * FROM categories WHERE parent =&#39; $ parent_id&#39;&#34;

答案 1 :(得分:0)

1 /您正在使用PDO($ db-&gt; query())并且您不应该混合使用mysqli和PDO,而是使用$ db-&gt; fetch。

2 /您有一个sql错误FROM而不是FORM

<?php
$sql="SELECT * FROM categories WHERE parent = 0";
$pquery = $db->query($sql);
?>
<!-- Top NavBar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <a href="index.php" class="navbar-brand">Boutique</a>
        <ul class="nav navbar-nav">
          <?php while($parent = $pquery->fetch(PDO::FETCH_ASSOC)) :?>
          <?php 
          $parent_id = $parent['id'];
          $sql2 = "SELECT * FROM categories WHERE parent = '$parent_id'";
          $cquery = $db->query($sql2);
          ?>
          <!-- Menu Items -->
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <?php echo $parent['category']; ?>
              <span class="caret"></span></a>
            <ul class="dropdown-menu" role="menu">
              <?php while($child = $cquery->fetch(PDO::FETCH_ASSOC)) : ?>
              <li><a href="#"><?php echo $child['category'] ;?></a></li>
              <?php endwhile; ?>
            </ul>
          </li>
          <?php endwhile; ?>
        </ul>
      </div>
    </nav>