[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 メーリングリストの案内