[PHP-users 29140] PDO fetchの取得したいrowの行番号

solaris solaris @ red-eyes.jp
2006年 5月 7日 (日) 00:12:32 JST


マコトです。

PDO(PHP Data Objects)関数のPDOStatementオブジェクトの
fetchメソッドで、行番号を指定してレコードを取得したいです。

pg_fetch_result関数でいうところの、第2パラメータにあるrowの
指定をどのようにしてよいか分かりません。

例えば、あるtestテーブルに以下データを用意したとします。
create test (a text, b text);
insert into test (a, b) values ('name_01', 'value_01');
insert into test (a, b) values ('name_02', 'value_02');
insert into test (a, b) values ('name_03', 'value_03');
insert into test (a, b) values ('name_04', 'value_04');


PDO関数により、下記PHPソースを実行しますが、fetchメソッドで最初から
2行目のレコードを取得したいのですが、希望通りの動作をせず、
1行目のレコードを取得します。
-------------------------------------------------------------------------------

	// DB未接続なら接続処理する
	$dbh = new PDO("pgsql:dbname=test user=postgres password=*******");
	// カラム名を小文字で取得する
	$dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
	// エラー時にExceptionをthrowさせる
	$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	$sql = "SELECT * FROM test ORDER BY a;";
	$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL));
	$stmt->execute();
	
	$row = $stmt->fetch();
	$row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_ABS, 2);
	print_r($row);
-------------------------------------------------------------------------------

fetchメソッドで行番号を指定して取得するにはどのように設定すればよいでしょうか?

よろしくお願いします。




PHP-users メーリングリストの案内