【问题标题】:how to go one record back in mysqli_query result object [closed]如何在mysqli_query结果对象中返回一条记录[关闭]
【发布时间】:2013-10-01 08:01:04
【问题描述】:

我知道 mysqli_data_seek 让我们移动到所需的偏移量,但是 当满足特定条件时,我如何使用它来后退一步? 我使用 while-loop 来表示条件因此您可以得出结论,当满足条件时,指针将位于下一条记录上。 我怎么才能把它拉回来一步?

【问题讨论】:

  • 你有没有尝试过?
  • @CORRUPT 尝试使用计数器变量并成功使用答案中给出的某种类似方法,但只是想知道是否有任何迭代器函数,例如 prev()
  • 不,没有这样的内置方法(即prev()next()current()rewind(),如iterators 有)。但是,您可以扩展mysqli_result 类或创建一个decorator,可以做到这一点。或者简单地说,创建自己的函数。

标签: php mysql


【解决方案1】:

试试这个:

$i = 0;
while($row = mysqli_fetch_row($result)){
 if($i != 0 && condition){
       mysqli_data_seek($result, $i-1);
 }
$i++;
}

【讨论】:

    【解决方案2】:

    这并不像看起来那么难。

    1. 计算获取的偏移量。
    2. 当您达到条件时,转到 offset - 1 并在需要时使用 continue 迭代循环。

    示例:

    $offset = 0;
    
    while($row = $result->fetch_assoc()){
    
       if($condition && $offset){
            $result->data_seek(--$offset);
            continue;
       }
    
       $offset++;
    
       // actions
    
    }
    

    另外,我将引用我的评论:

    没有这样的内置方法(即prev()next()current()rewind(),如 iterators 已)。但是,您可以延长 mysqli_result 类或创建一个 decorator, 可以的。

    【讨论】:

      猜你喜欢
      • 2023-01-26
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多