php - 提取mysqli查询结果的第n个元素

标签 php mysql multidimensional-array mysqli

使用旧的 mysql_ 语法我可以做这样的事情:

$query=mysql_query('select id from rank');
for ($i=0; $i<$max; $i++) {
$id0[$i] = mysql_result($query, $i, "id");
$id1[$i] = mysql_result($query, $i+1, "id");
$id2[$i] = mysql_result($query, $i+2, "id");  }

我发现用 mysqli 达到相同的结果有很多困难;通常我使用函数 mysqli_fetch_assoc($query) 获取 mysqli 查询的数据,逐行递归地提取查询结果中的所有记录。

如何获得我需要的结果,即在递归函数的每个循环中提取查询结果的第n、nth+1、nth+2个元素?我如何才能引用 id 字段的第 n 个元素?对我来说,一次处理一行查询结果似乎是不可能的......

对不起,如果这个问题看起来很愚蠢,但我正在将一个使用 mysql_ 语法制作的旧站点转换为 mysqli_ 并且我正在即使我尝试引用 PHP.net 文档(当然还有 Stack Overflow 知识......)也会遇到很多困难......

编辑(问题已解决): 我已经按照 Jeroen 的建议解决了我的问题:由于 fetch_all 函数不可用,我创建了一个数组,通过循环存储 msqli 查询结果的每一行:

    while ($row=mysqli_fetch_assoc($query)) 
    $table[]=$row; 

以这种方式操作,使用常用索引指向表的每条记录要容易得多:

for ($i=0; $i<$max; $i++) {
    $id0[$i]=$table[$i]["id"];
    $id1[$i]=$table[$i+1]["id"];
    $id2[$i]=$table[$i+2]["id"]; }

最佳答案

您可以使用 mysqli_data_seek()将结果指针设置为结果集中的任意行。

所以你的代码看起来像这样:

for ($i=0; $i<$max; $i++) {
  mysqli_data_seek($result, $i);
  // depending on your php version you might need a temporary variable to
  // get the ID
  $id0[$i] = mysqli_fetch_assoc($result)['id'];
  ...
}

关于php - 提取mysqli查询结果的第n个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676585/

相关文章:

c - 在 C 中传递和返回二维数组

javascript - 将数据推送到没有索引的数组

php - 如何在 PHP 正则表达式中获得全部匹配的 3 个条件?

php - 如何更新两个mySQL表并将第一个表中的主键输入到第二个表中?

mysql - 创建涉及两个表的 SQL 查询,其中一个表只需要一个值

c - 如何在C中重新排序n维矩阵的维度? (类似于排列(A,[2 :n 1]) in Matlab )

PHP_LDAP : Test that Organizational Unit exist?

php - Laravel Command 输出的 Node 版本与命令行不同

mysql - MS Access VBA : What does OpenRecordSet return?

MySQL View 将两列导入一列