使用旧的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、第n+1、第n+2个元素?我怎样才能引用id
域的第n个元素呢?对我来说,一次处理一行查询结果似乎是不可能的。。。
如果这个问题看起来很傻,请原谅,但我正在将一个用mysql_
语法制作的旧网站转换为mysqli_
,即使我试图参考PHP.net文档(当然还有堆栈溢出知识…),我也会遇到很多困难…
编辑(问题已解决):我已经按照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'];
...
}