MySQL クエリまたはテーブル オブジェクトが必要です。たとえば、PDO オブジェクトを入力として取り、テーブルで必要なすべてのことを行うものです。
このオブジェクトは 、 などの配列インターフェイスを実装できると考えていたので、通常の配列のように行をCountable
簡単に処理できました。ArrayAccess
Iterator
foreach
非推奨の関数には、行ごとに移動するのmysql_*
に役立つ非常に便利な function がありました (まだあります) 。そのため、すべてのメソッドを実装できました。最初に 1 つのクエリを実行し、リソースのプライベート フィールドに行を保持して、必要に応じてサービスを提供できます。mysql_data_seek()
Iterator
適切なクエリをデータベースに送信して結果を取得することで、他の機能 (主に情報提供などmysql_list_tables()
) をカバーできますが、特定の行に移動するにはどうすればよいでしょうか?
fetch()
メソッドの最後のパラメータがカーソル位置だと思っていたのですが、呼び出すと
$p = $database->query('SELECT * FROM tobjects');
$row = $p->fetch(PDO::FETCH_ASSOC, PDO::ATTR_CURSOR,$i);
の値に対して常に同じ行になります$i
。
編集
実際には同じ行ではありませんが、 の最初の呼び出しで 1 行目fetch()
、2 行目で 2 行目など、カーソル情報がないようです。回答で示唆されているように、私はこれを行いました
$p = $database->prepare('SELECT * FROM tobjects',
array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
$p->execute();
$row = $p->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, $i);
しかし、これは同じように機能します。