// $dbには,MySQLなら"mysql",PostgreSQLなら"pg"が入っている call_user_func($db."_data_seek",$var,0);こんな感じで接頭辞だけ変えて関数を呼び出すことで対応させようとしているんですが,
This software is distributed under the GNU General Public Licenseとのことなので,公式に対応されるまでの繋ぎとして改変版をここに置いときます*4.
dBug has been downloaded 5855 times*5なので需要があるのか無いのか謎ですが.
*1 : 書いた時点のバージョンは1.2
*2 : 両者にそれほど違いはありませんが
*3 : PostgreSQLに対応させただけですよ.
*4 : 拙い英語ですが作者の方にはメール送りました.元々対応させるつもりだったのかよくわからないので迷惑だったかも…….
*5 : 2007/5/16 15:09現在
// 313行 // ここでは,表示するためにシークしたデータベースリソースのカレント行を頭に戻している - call_user_func($db."_data_seek",$var,0); + if ($db == "pg") { + call_user_func($db."_result_seek",$var,0); + } else { + call_user_func($db."_data_seek",$var,0); + }
// 300行 // $iで読み込む行番号の指定も行う - $row=call_user_func($db."_fetch_array",$var,constant(strtoupper($db)."_ASSOC")); + if ($db == "pg"){ + $row=call_user_func($db."_fetch_array",$var,$i,constant("PGSQL_ASSOC")); + } else { + $row=call_user_func($db."_fetch_array",$var,constant(strtoupper($db)."_ASSOC")); + }pg_fetch_fieldという関数は存在しないので,
// 295行 - $field[$i]=call_user_func($db."_fetch_field",$var,$i); + if($db == "pg") { + $field[$i]->name=call_user_func($db."_field_name",$var,$i); + } else { + $field[$i]=call_user_func($db."_fetch_field",$var,$i); + }
// 303-308行 for($k=0;$k<$numfields;$k++) { $tempField=$field[$k]->name; $fieldrow=$row[($field[$k]->name)]; $fieldrow=($fieldrow=="") ? "[empty string]" : $fieldrow; echo "<td>".$fieldrow."</td>\n"; }PostgreSQLには,全く同じような値を返す関数が無いので,
// 295行ら辺をこんな感じに書き換え $tmpFieldName = ""; if($db == "pg") { $tmpFieldName = call_user_func($db."_field_name",$var,$i); } else { $tmpFieldName = call_user_func($db."_fetch_field",$var,$i); $tmpFieldName = $tmpFieldName->name; } $field[$i] = $tmpFieldName;下側
// 303-308行をこんな感じに書き換え for($k=0;$k<$numfields;$k++) { $tempField=$field[$k]; $fieldrow=$row[($field[$k])]; $fieldrow=($fieldrow=="") ? "[empty string]" : $fieldrow; echo "<td>".$fieldrow."</td>\n"; }
*6 : 詳しくはわからないですが,少なくとも感覚的にはおかしな操作です
* NOTE!らしいです.
* ==============
* forceType is REQUIRED for dumping an xml string or xml file
* new dBug ( $strXml, "xml" );