为什么我只访问 MySQLi 结果集中的第一个值?

Susan Sarandon
发布: 2024-11-19 11:33:02
原创
796 人浏览过

Why Am I Only Accessing the First Value in My MySQLi Result Set?

在 MySQLi 中迭代结果集

在 MySQLi 中处理结果集时,您可能会遇到只能访问第一个值的问题迭代期间。这通常是由于使用 fetch_array() 以及对其行为理解不当造成的。

fetch_array() 的默认行为

默认情况下,fetch_array() 返回一个具有以下两种情况的数组:索引键和关联键,称为 MYSQLI_BOTH。要指定仅包含索引键或关联键的结果集,请分别使用 MYSQLI_NUM 或 MYSQLI_ASSOC。

fetch_array() 的替代方案

而不是依赖 fetch_array(),考虑更高效、简洁替代方案:

  • 关联数组 (MYSQLI_ASSOC): 使用列名称作为键访问值:
while ($row = $output->fetch_array(MYSQLI_ASSOC)) {
    echo $row['uid'];
}
登录后复制
  • 索引数组 (MYSQLI_NUM): 通过以下方式访问值索引:
while ($row = $output->fetch_array(MYSQLI_NUM)) {
    echo $row[0];
}
登录后复制
  • 面向对象的迭代: 将结果集作为可迭代对象进行迭代,省略 fetch_array() 的需要:
foreach ($output as $row) {
    echo $row['uid'];
}
登录后复制

故障排除迭代

使用 $i 通过索引键递增不适合具有关联键的结果集。例如,结果集可能具有以下结构的值:

[
    0 => [0 => 1, 'uid' => 1],
    1 => [0 => 2, 'uid' => 2],
    2 => [0 => 3, 'uid' => 3]...
]
登录后复制

在这种情况下,$row[1] 在后续迭代中将不存在,从而导致问题。

以上是为什么我只访问 MySQLi 结果集中的第一个值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板