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