1

data_seek が結果セットのポインター セッターである場合、現在の行を取得する方法はありますか?

SELECT * FROM xxx ORDER BY RAND() LIMIT 0,10

$m->data_seek(9); // last item

$last = $m->fetch_object();

echo $m->........; // must echo 9
4

1 に答える 1

1

私の知る限り、これを行うネイティブな方法はありませんが、そのような機能を実装するために mysqli_result を拡張することはできます...これにより、メインの mysqli クラスも拡張する必要があります。

  • $result->current_field は、$result->fetch_field() を使用してフィールド情報を取得した場合にのみ機能します

結果クラスのこのようなもの

class extended_mysqli_result extends mysqli_result
{
    public $last_seek = 0;

    public function data_seek($offset = 0)
    {
        parent::data_seek($this->last_seek = $offset);
    }
}

そして、メインクラスのこのようなもの

class extended_mysqli extends mysqli
{
    public function query( $query )
    {
        if ( $this->real_query($query) )
        {
            if ( $this->field_count )
            {
                return new extended_mysqli_result($this);
            }
            else return true;
        }
        else return false;
    }
}
于 2012-11-18T06:41:13.273 に答える