2007.12.06

PHPからSQLServerに接続する

PHPからSQLServerに接続する場合、PHPマニュアルを見ると
Linuxから接続する場合FreeTDSというライブラリを使用する必要があります。

FreeTDSのインストール手順については、以下の手順で行います。

#ソースを取得する wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz

#ソースを展開する
tar xvzf freetds-stable.tgz
cd freetds-0.64

#Makefileを作成する
./configure

#コンパイル & インストール
make
make install

次にFreeTDSの設定を行います。
設定ファイルはfreetds.confという名前で作成されています。

vi /etc/freetds.conf

[MSSQL_TEST]
# SQLServerのIPアドレスを入力します
host=192.168.1.21
# SQLServerのポート番号を入力します。特に指定しない場合1433がデフォルトです。
port=1433
# TDSプロトコルのバージョンを入力します。SQLServer 2000,SQLServer2005の場合8.0を入力します。
tds version = 8.0
# クライアントの文字コードを指定します。
client charset = UTF-8

◆SQLServerへの接続確認
 tsqlというコマンドを用いてLinux端末からFreeTDS経由でSQLServerに接続できるか
 確認します。

# -S の後にFreeTDSの設定ファイルに記入した設定名(MSSQL_TEST)を入力します。
# -U の後にデータベースログインユーザー名
# -P の後にデータベースログインパスワード
tsql -S MSSQL_TEST -U ユーザー名 -P パスワード
# 以下のように1>と表示されれば、接続成功となります。
1>

※locale is~やlocale charser is~などのメッセージが表示された場合には、
 クライアントの実際の文字コードと、設定に記述した文字コードが異なっているため
 表示されます。

◆PHPから接続する
PHPには、mssql_で始まるSQLServer用の関数があらかじめ用意されているので、
それを使います。
ただし、標準では組み込まれていないため、http://phprpms.sourceforge.net/mssql などでパッケージを
探すか、PHPをソースからコンパイルしてインストールする必要があります。

コンパイルする場合には、--with-mssqlオプションをつけることで、mssql関数が使用可能となります。

ここまででようやくPHPとSQLServerを接続する準備が整いましたので、
PHPのコーディングに取り掛かれます。
今回は、DB接続にPearのDBを使用します。
PHPの文字コードは、FreeTDSの設定でクライアントの文字コードをUTF-8にしたので
それに合わせます。

<?php
require_once "DB.php";

$dsn = "mssql://ユーザー:パスワード@FreeTDSの設定名/DBの名前";

$conn = DB::connect($dsn);

if (DB::isError($conn)) {
  echo "DB接続エラー";
}else{
  echo "DB接続成功";
}

$conn->disconnect();

?>


正しく設定されていれば、画面上に「DB接続成功」と表示されます。
以上で、Linux環境でPHPからSQLServerに接続が可能となります。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
nishimaki