循环时php-pdo查询有问题



我有一个数据库表,它有两列,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()){

最新更新