php - 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;
}
解决方案
将 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。
推荐阅读
- php - php count 返回 1 而不是真正的数组长度
- fiddler - Fiddler 代理不适用于 https 请求
- .net - 使用 Jenkins 将点网项目部署到 AWS Lambda
- ios - 音频输出 callkit ActionSheet - 可以从代码开始吗?
- c# - 从 C# 调用时,工作的 powershell 函数无法完成他的工作
- python - 在 msgpack 0.6 中获取字节偏移量
- jsf - 在没有 JavaScript 的情况下动态设置数据列表中的 ID
- sql - 是否可以从 Access 到 QuickBooks 逐行发送信息?
- c++ - 为什么 static_cast 不使用转换运算符来指向 const 的指针?
- java - 如何在屏幕中心创建一个透明的弯曲透明矩形?