首页 > 解决方案 > echo 语句仅打印最新添加的行中的年份值。如何打印其他值?

问题描述

我在数据库中放置了表格,排名,年份,描述,...作为列,并且存在多行...我应该返回$positions array另一个 php 文件...我试过echo $positions[0]['rank'];但出现错误“未定义的偏移量:0"

    function loadPos($pdo,$profile_id)
{
    $stmt=$pdo->prepare('SELECT * FROM position WHERE profile_id=:prof ORDER BY rank');
    $stmt->execute(array(':prof' => $profile_id ));
    $positions=array();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {

        $positions=$row;



    }
    echo $positions['rank'];

return $positions;
}

标签: phpmysqlassociative-array

解决方案


将 echo 语句移动到您的 while 循环中。

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    $positions=$row;
    echo $positions['rank'];
}

您现在不需要创建新变量。您可以使用 $row

while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    echo $row['rank'];
}

看来你不明白什么是while语句。我将从学习基本的流量控制开始。

==更新==

下面的评论指出 $positions 应该是一个可以返回的数组。所以:第 1 步 - 使 $positions 成为一个数组。第 2 步 - 将每一行放入数组中。第 3 步 - 返回数组。以下代码不担心打印行。它只关注创建和返回数组的方法。

$positions = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
    $positions[] = $row;
}
return $positions;

希望很明显 $positions 被创建为一个空数组。每次通过 while 循环时,都会将行添加到数组中。[] 表示“下一个索引”。最后,返回 $positions。


推荐阅读