[PHP-users 28346] Re: PHP5 - AS400 DB2 V5.1 by ISeriesAccess ODBC FC4
Kenichiro Fuji
k_fuji @ sales.mitsumi.co.jp
2006年 2月 7日 (火) 12:46:03 JST
冨士です。
>柴田さん
一歩前進しましたね。おめでとうございます。
>/etc/odbcinst.iniに
>[iSeries Access ODBC Driver]
>Description = iSeries Access for Linux ODBC Driver
>Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
>Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
>Threading = 2
>DontDLClose = 1
>UsageCount = 1
>というエントリーが追加されました
これが出来たら、odbc.iniの設定が必要です。
ODBCConfigurationの項を見ていただくとそのあたりが書いてあります。
ODBCConfigというコマンドを実行すると、GUIでの設定画面(!)が出るので
#そのためにぼくはgnomeを入れたヘタレです(汗
これで設定するのが近道でしょうね。
windowsのodbcデータソースアドミニストレータを見ながら、作成しました。
そうやって作った例です。
システムとかIDとかパスワードとかデフォルトライブラリとかは適当に
直してください。
[HONODBC]
Description = iSeries Access ODBC Driver
Driver = iSeries Access ODBC Driver
System = XXX.XXX.XXX.XXX
UserID = hoge
Password = fuga
Naming = 0
DefaultLibraries = hogefuga
Database =
ConnectionType = 2
CommitMode = 2
ExtendedDynamic = 1
DefaultPkgLibrary = hogefuga
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 1
ForceTranslation = 1
Trace = 0
参考までにodbcの設定確認のために書いたものです。
php4.3.9で動作はしました。
#でも文字化けが直らなくて投げちゃった(大汗
<?PHP
$sql = "SELECT * FROM AAAAA.BBBBB.CCCCC CCCCC";
$arr = dbquery($sql);
echo "<b>SQL:</b>$sql\n";
echo "<table borders=\"1\">";
for ($i=0;$i<count($arr);$i++){
echo "<tr><td>".$arr[$i][1]."</td></tr>\n";
}
echo "</table>";
function dbquary($sql){
$arr=array();
$DSN="HONODBC";
$conn=odbc_connect($DSN,"hoge","fuga");
$rs=odbc_exec($conn,$sql);
$x=1;
while (odbc_fetch_row($rs)){
for ($y=1;$y<=odbc_num_fields($rs);$y++)
$arr[$x][$y]=odbc_result($rs,$y);
$x++;
}
if ($x>1)
return $arr;
}
?>
AAAAA.BBBBB.CCCCCのあたりが肝かもしれません。
AAAAAがAS400のマシン名?で、BBBBBがライブラリ、CCCCCが
実際にアクセスしたいテーブルですかね。
ただ、これがphp5で動くかどうかは未検証です。
ともかく、もうちょっとだと思いますので頑張ってください。
PHP-users メーリングリストの案内