我有一个数据库表,它有两列,id和category。我的目标是使用while循环将类别从数据库中回显为li和锚点。
这是代码:
<ul class="nav navbar-nav">
<?php $connect = new db();
$stmt = $connect->link->query("SELECT * FROM categories")->fetchall();
while($row = $stmt){
$category = $row["category"];
echo "<li><a href='#'>{$category}</a></li>";
}
?>
</ul>
我得到了一个错误,但它对我来说没有意义。它说的是未定义的索引"类别"。它指的是我将$category分配给$row[]的位置。
我确信数据是被提取的,因为我使用了print_r((函数,它打印出了
编辑:根据请求从var_dump((输出
C:wamp64wwwcmsCMS_TEMPLATEincludesnav.php:21:
array (size=4)
0 =>
array (size=4)
'category_id' => string '1' (length=1)
0 => string '1' (length=1)
'category' => string 'bootstrap' (length=9)
1 => string 'bootstrap' (length=9)
1 =>
array (size=4)
'category_id' => string '2' (length=1)
0 => string '2' (length=1)
'category' => string 'javascript' (length=10)
1 => string 'javascript' (length=10)
2 =>
array (size=4)
'category_id' => string '3' (length=1)
0 => string '3' (length=1)
'category' => string 'html' (length=4)
1 => string 'html' (length=4)
3 =>
array (size=4)
'category_id' => string '4' (length=1)
0 => string '4' (length=1)
'category' => string 'css' (length=3)
1 => string 'css' (length=3)
$stmt
是数据库中所有行的列表-您可以使用->fetchall();
来获得查询结果-这意味着它是一个二维数组,其中的行由数字索引,每行都有字段名。所以你最好更换
while($row = $stmt){
用一些会在结果上循环的东西。。。
foreach ( $stmt as $row ) {
如果您需要使用while循环,那么您可以删除fetchAll
,并使用while环路使用fetch()
一次提取每一行。。。
$stmt = $connect->link->query("SELECT * FROM categories");
while($row = $stmt->fetch()){