トップ «前の日記(2009-09-11) 最新 次の日記(2009-09-15)» 編集

十日日記


2009-09-14

Link IIS 7.0+SQL Server 2008+Delphi for PHP 2.0

Delphi for PHP 2.0 この前Delphi for PHP 2.0を試してみて衝撃を受けた。Webフレームワークで定義されている変数や定数を色付け・補完できるようにしたIDEなどとは次元が違う。Visual StudioでWindowsアプリケーションを作るような感覚でWebアプリが作れるのだ。(本当は「Delphiで」と書くのが正確なのだろうが、私はDelphiを使ったことがない。)

Delphi for PHPのデータベースコンポーネントはMicrosoft SQL Serverにも対応していると書いてある。ただしバージョンについては明記されていない。そこで販売元に尋ねてみたところ、DB接続にはADOdb(マイクロソフトActiveX Data Objectsとは無関係)を使っているので、それに準じるという。つまりSQL Serverへの接続は、運用環境がWindows ServerならばADOやSQL Server Native Clientを使うことができる一方、UNIXならODBC経由になる。

今回は、Windows Server 2008上にてIIS 7.0+SQL Server 2008という環境で試験してみた。PHPはマイクロソフトの特設ページからインストールした。いまやPHPはブラウザー上でボタンをクリックするだけでインストールできる。おまけにSQL Server Native Clientの設定まで実施してくれるので、何の不自由もない。

……と書きたいところだが、日本語を扱う場合には注意が必要である。SQL Serverは文字列をUCS-2で格納しており、上のページでインストールしたPHPに同梱されているSQL Server Driver for PHP 1.0はUTF-8への文字コード自動変換機能を持っていない。そこで、SQL Server Driver for PHP 1.1 CTPをインストールする。「PHP on IISからSQL Serverを使う」という記事にあるとおりドライバーは6種類あるので、適宜選んでphp.iniに書き込む。ちなみにマイクロソフトのサイトからインストールした場合には、「php_sqlsrv_52_nts_vc6.dll」が該当する。

あいにくUTF-8はデフォルトエンコーディングではない。そのため、

  sqlsrv_connect(SERVER, ARRAY)

関数の連想配列部分に

   Encoding=>'UTF-8'

と明示する必要がある。

さて、Delphi for PHP 2.0にに付属するADOdbは少し古く、SQL Server Driver for PHP 1.1に対応していない。(より古いphp_mssql.dllが同梱されている。)上に掲げたページから最新版(いま現在で5.09a)を取得してディレクトリごと入れ替えた上、drivers/adodb-mssqlnative.inc.phpの379行目

   $connectionInfo = array("Database"=>$argDatabasename,'UID'=>$argUsername,'PWD'=>$argPassword);

にエンコーディングをUTF-8決め打ちで追加した。

サンプルデータベースとしてNorthwindJを使い、DBGridを表示させることにした。うまくいかない。テーブル名が日本語だとダメなようだ。テーブル名をラテン文字に変えて試す。……ダメだ。そうと思ってダメ元でFirefoxではなしにInternet Explorerで表示させてみたら、ちゃんと表示できた。ただしNorhwindJは列名もまた日本語で、その部分が文字化けしている。(接続先のDBがMySQLやPostgreSQLのときにはFirefoxでも表示できた。)

IIS 7.0+SQL Server 2008+PHPという組み合わせは少数だろうし、Delphi for PHPの利用者も多くはないだろう。この積集合となるとさらに情報が少ないと思われるので、ここにメモしておいた。

Tags: Dev Admin
[]


プロフィール

渡辺 慎太郎(na@10days.org)

分野別表示

Admin | Client | Dev | Excel | Linux | PC | PDA | Web | iPad | web | 家電 | 文具 | | 英語 | 言語 | | 音楽

月別表示

1999|07|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|

最近の記事

雨量情報 dictionary.com Yahoo google Yahoo! 路線情報 東京アメッシュ l-mura l-aka l-momo 目次 r-mura r-aka r-daidai r-kiiro asahi.com nogulabo r-sora r-midori r-midori r-momo