我有两个“按钮”将数组光标移动到下一条记录或前一条记录。使用“下一步”移动到下一个(较旧)记录的功能正常工作。
但是,移动到先前(“上一步”)记录(朝向数组顶部)的功能无法正常工作。我怀疑这可能与使用“ mysqli_data_seek ”有关。我的信念是它会将光标设置到当前位置,然后回溯到之前的记录。相反,光标继续向前移动,就像使用“ next ”而不是“ prev ”一样。我怎样才能回溯到之前的记录?
function return_next_issue()
{
// Newer Issue - Moves up towards the top of the array.
// mysqli_data_seek($_SESSION['result'], 0);
while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
{
if($_SESSION['issuenum'] == $row[0])
{
break;
}
}
prev($_SESSION['result']);
$row=mysqli_fetch_row($_SESSION['result']);
return $row[0];
}
答案 0 :(得分:0)
由于mysqli_result对象在会话中并且已共享,因此您可能希望将内部指针初始化为0,以确保您知道自己将从头开始搜索。您还可以创建一个在迭代中递增的变量,以识别您需要的索引并寻找前一个索引。
function return_next_issue()
{
// Newer Issue - Moves up towards the top of the array.
$i = 0;
mysqli_data_seek($_SESSION['result'], 0);
while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
{
if($_SESSION['issuenum'] == $row[0])
{
break;
}
$i++;
}
mysqli_data_seek($_SESSION['result'], $i - 1);
$row=mysqli_fetch_row($_SESSION['result']);
return $row[0];
}
请注意,如果$ _SESSION ['issuenum']为0或者大于可用行数,则代码将无效。因此,我提供的代码也是如此。