PHPからSQL Serverへの接続 / MySQLへの接続との比較


SQL Server Driver for PHP 1.1導入 | Windows Maniax」の環境準備によって、IIS上で動くPHPからSQL Serverへ接続する準備が整いました。

今回からは、SQL Server Driver for PHPを使用して実際にPHPからSQL Serverを操作する方法を見ていきます。単に、コーディング例を掲載しても面白くないのでMySQLの場合と比較していきます。

PHPからMySQLへの接続

まずはMySQLへの接続を行う時に使用する「mysql_connect」を見たいと思います。以下の例は、ホスト名と、ユーザ名、パスワードを指定しています。(その他の引数については、PHP: mysql_connect – Manualを参照してください。)

  $link = mysql_connect('ホスト名', 'ユーザ名', 'パスワード');

接続に成功すると「MySQL リンク ID」、失敗すると「false」が戻ってきます。 ここまでは単にMySQLに接続しただけですので、もう少し広げてMySQLに接続しDBを選択する方法を見てみます。

$link = mysql_connect('ホスト名', 'ユーザ名', 'パスワード');
mysql_select_db('データベース名',$link);

データベースの選択に成功すると「True」、失敗すると「False」が戻ってきます。成功した後に発行されるクエリは、選択されたDBに対して行われます。(参考:PHP: mysql_select_db – Manual)

MySQLに接続し、DBを選択しました。この後は、クエリを発行しデータを選択したり更新、削除などを行います。そして、DBへの操作が完了したら接続を閉じます。

$link = mysql_connect('ホスト名', 'ユーザ名', 'パスワード');
mysql_select_db('データベース名',$link);
mysql_close($link);

成功すると「True」、失敗すると「False」が戻ってきます。(詳細については、PHP: mysql_close – Manualを確認してください。必要な場合についての説明もあります。)

PHPからSQL Serverへの接続

ここまでは、MySQLの場合についてみてきました。次にSQL Serverの場合を見ていきます。

SQL Serverへの接続方法は、Windows認証とSQL Server認証の2種類が提供されています。SQL Server認証がIDとパスワードを使用して認証する方法で、MySQLの認証と同じ方法です。Windows認証は、Windowsアカウントで認証します。通常、IIS上で動作するPHPからSQL Serverに接続するときのユーザは、「IUSER」です。事前に、SQL Serverに「IUSER」を登録しておくとWindows認証されアクセスできます。セキュリティの観点から、Windows認証が推奨されます。

ここでは、Windows認証の場合とSQL Server認証の場合の両方を見てみます。

まずはWindows認証です。

$link = sqlsrv_connect('ホスト名');


次にSQL Server認証です。

$link = sqlsrv_connect('localhost', array('UID'='ユーザID','PWD'='パスワード'));

接続に成功すると「SQL Server リンク ID」、失敗すると「false」が戻ってきます。

MySQLと同じ認証方法で認証を行うには、2つ目の引数の配列内でユーザIDとパスワードを渡します。しかし、特に理由が無いのであればWindows認証で十分だと思います。

※デフォルトの設定では、SQL Server認証は無効になっていますので有効にしないと認証されません。

次に、データベースの選択方法について見てみます。

$link = sqlsrv_connect('ホスト名', array('Database'=>'データベース名'));

選択するデータベースについても、「sqlsrv_connect」の2つ目の引数の配列内で指定します。

(参考:sqlsrv_connect / サーバーへの接続

最後に、SQL Serverの接続を閉じる例を見てみます。

$link = $conn = sqlsrv_connect('ホスト名', array('Database'=>'データベース名'));
sqlsrv_close($link);

成功すると「True」、失敗すると「False」が戻ってきます。(詳細は、sqlsrv_closeを参照してください)

まとめ

以上、MySQLの場合とSQL Serverの場合を見てきました。比較的よく似ていますが、一部仕様がことなる部分があります。ですので、MySQLのプログラムをSQL Serverにマイグレーションする場合には、接続まわりは多少変更が必要です。

とは言っても、単純に置換ができないだけで変更はワンパターンなので、すごく簡単に変更できます。ぜひお試しあれ。(とは言え、現段階ではおもしろくもなんとも無いですが^^;)


「データベースサーバに接続し。使用するデータベースを選択する」

MySQL

$link = mysql_connect('ホスト名', 'ユーザ名', 'パスワード');
mysql_select_db('データベース名',$link);


SQL Server

$link = $conn = sqlsrv_connect('ホスト名', array('Database'=>'データベース名'));


タグ:


コメントをどうぞ