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

Hun*_*ter 5 php mysql mysqli multidimensional-array

使用旧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");  }
Run Code Online (Sandbox Code Playgroud)

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

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

对不起,如果这个问题看起来很愚蠢,但是我正在将使用mysql_语法mysqli_编写的旧网站转换为进程,即使我尝试引用PHP.net文档,我也遇到了很多困难(当然, Stack Overflow知识......)......

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

    while ($row=mysqli_fetch_assoc($query)) 
    $table[]=$row; 
Run Code Online (Sandbox Code Playgroud)

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

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

jer*_*oen 3

您可以使用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'];
  ...
}
Run Code Online (Sandbox Code Playgroud)