7月に、Windows Server 2008 R2上で動くPHPで作ったアプリから、SQL Server 2000にアクセスできるか?というのを試していたのですが、試行の過程を記録していませんでした。簡単ですがメモっておきます。多分あとで自分が使うので。
発端については7月15日に書いていました。これです。
Windows Server 2008 R2にIISとPHPを入れる
Windows Server 2008 R2(64bit)に、PHP 5.6.11を入れました。設定はServer APIとしてCGI/FastCGIを利用、入れたバージョンはNTS(非スレッドセーフ版)です。このバージョンはVisual C++ 2012のランタイムも必要なので、それもダウンロードして一緒に入れています。
とりあえず、IISを動くようにしてphpinfo()だけを書いたページを作り、PHP稼働確認と設定を確認したのがこの画面。
SQL Server 2000を用意する
なんで今更SQL Server 2000なの?と思われるかもしれませんが、世の中、常に最新版にあげ続けられ「ない」環境だってあるんです。そこはそういうモノだとおもって見逃してください(業務系の仕事やってる人なら判ってもらえますよね?ww)。
SQL Server 2000をWindows Server 2008 R2上に入れられれば便利だったのですが、2008 R2上ではSQL Serverのインストーラーが動きませんでした。バージョンチェックを行っているようです。仕方ないのでWindows XP環境を仮想環境につくってそちらに導入。ま、実際のサーバーもWebサーバーとDBサーバーが分かれる可能性が高いので、このほうがリアルなテストになりますね。
SQL Serverには簡単なテーブル「NAMES」を作って、バカみたいなデータを入れておきます。イマドキこれかよ、みたいな。もちろん(笑)、管理者アカウントはsa/saです(笑←やめなされ)。
データを読み出すコードを書く
ゴメンナサイ、コードはIBMのサイトにあったものを転用させてもらいました。
- 初めて PHP で ODBC を使ってみる/PHP による汎用的なデータベース接続の初心者向けガイド
- https://www.ibm.com/developerworks/jp/opensource/library/os-php-odbc/
これをべた貼りしただけのファイルを「db.php」としてIISの公開フォルダに置きます。
<?php $connection_string = 'DRIVER={SQL Server};SERVER=192.168.0.18;DATABASE=test'; $user = 'sa'; $pass = 'sa'; $connection = odbc_connect( $connection_string, $user, $pass ); $sql = "SELECT * from NAMES"; $rs = odbc_exec($connection,$sql); echo "<table><tr>"; echo "<th>Test</th></tr>"; while (odbc_fetch_row($rs)) { $result = odbc_result($rs,"name"); echo "<tr><td>$result</td></tr>"; } odbc_close($connection); echo "</table>"; ?>