【问题标题】:The echo statement prints only the year value from the row that was added latest.How do I print other values?echo 语句仅打印最新添加的行中的年份值。如何打印其他值?
【发布时间】:2020-04-22 13:44:05
【问题描述】:

我已经在数据库中定位表,排名,年份,描述,......作为列,并且存在多行......我应该将$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;
}

【问题讨论】:

  • 您应该在循环中添加echo $positions['rank'];。 ..

标签: php mysql associative-array


【解决方案1】:

将 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。

【讨论】:

  • 很抱歉我之前没有提到它,但我需要将 $positions 数组返回到另一个 php 文件..
  • 哪一个?您的查询返回多个。电脑猜不出来。你必须非常具体。
  • return $positions ..这个数组将在其他调用这个函数的php文件中使用
  • @AnαndNαkαt 你必须在其他文件中循环 trought $positions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
相关资源
最近更新 更多