[PHP-users 14521]pg_fetch_array()カラム指定の場合に値が取れない現象について

sorako yamamoto sorako_yamamoto @ hotmail.com
2003年 4月 8日 (火) 10:40:11 JST


こんにちは。
いつもお世話になっております。

pg_fetch_array()で取り出した配列に、カラム名を指定した場合、
値が取れないことがあり悩んでいます。

/* テーブル作成SQL */
CREATE TABLE user (
       empNo	VARCHAR(4) NOT NULL   ,	-- 社員番号
       name 	VARCHAR(32) NOT NULL   ,	-- 名前
       reference	VARCHAR(100) NOT NULL DEFAULT ''	,
       CONSTRAINT PK_tblOptUsers PRIMARY KEY(empNo)
);

/* データ入力SQL */
INSERT INTO user VALUES (
       '01'	 ,	-- 社員番号
       '山田 太郎' ,	-- フルネーム
       '備考です'	         -- 備考
);

INSERT INTO user VALUES (
       '02'	 ,	-- 社員番号
       '山田 花子' ,	-- フルネーム
       '備考です'		-- 備考
);


以上の様にテーブルを作成し、
PHPから、pg_connect()でDBに接続、
pg_fetch_array()でデータを取得しました。


// 以下ソース start ----->
$objCon = pg_connect("dbname=TestDB");
$sSql = "select * from user;";

if (!$objCon) {
	print "I can not connect to DataBase" ;
	exit();
} 

$objRs= pg_query( $objCon, $sSql );

if (!$objRs) {
	print "I can not execute SQL" ;
	exit();
} 

$maxrows = pg_num_rows( $objRs );
for ( $i = 0; $i < $maxrows; $i++ ) {
	$row = pg_fetch_array($objRs, $i);

	print "<br>";
	print "---------- 数字 ---------->";
	print "<li>$row[0]" ;	// 表示される
	print "<li>$row[1]" ;	// 表示される
	print "<li>$row[2]" ;	// 表示される

	print "<br>";
	print "---------- 連想 ---------->";
	print "<li>" . $row["empNo"];	// 表示されない
	print "<li>" . $row["name"];	// 表示される
	print "<li>" . $row["reference"];	// 表示される

	print "<br>";
	print "---------- pg_fetch_result() ---------->";
	print "<li>" . pg_fetch_result( $objRs, $i , "empNo" );     // 表示される
	print "<li>" . pg_fetch_result( $objRs, $i , "name"  );     // 表示される
	print "<li>" . pg_fetch_result( $objRs, $i , "reference" );// 表示される
}
// <----- end 

ためしにPEARのDBクラスを使ってアクセスしてみたところ、
同様の現象がおきました。
// 以下ソース start ----->
$objCon = DB::connect( "pgsql://unix()/TestDB" , true );
$sSql = "select * from users;";

if( DB::isError($objCon) ) {
	die("データベースに接続できません。処理を中止します。");
}
$objRs = $objCon->query( $sSql );
$aResult = array();

while( $row = $objRs->fetchRow( DB_FETCHMODE_ASSOC )) {
	$aResult[] = $row ;
}
$objRs->free();

$cnt = count( $aResult );
for($nI=0 ; $nI < $cnt ; $nI++ ) {
	print "<br>";
	print "<li>" . $aResult[$nI]["empNo"];	// 表示されない
	print "<li>" . $aResult[$nI]["name"];	// 表示される
	print "<li>" . $aResult[$nI]["password"];	// 表示される
	print "<li>" . $aResult[$nI]["reference"];	// 表示される
}
// <----- end 

表示されたりされなかったりで
設定ミスなのか、なんなのかよく分からずに困っています。
同様の現象が起こった方、または原因が分かる方、いらっしゃいましたらご教授くだ
さい。

よろしくお願いします。

postgreSQL 7.3.2
PHP        4.3.1
Apache     1.3.27

IE 6.0









_________________________________________________________________
自宅の PC で英語力をアップ MSN 英会話   http://englishtown.msn.co.jp/  



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