Comments
Transcript
pureXML 日本アイ・ビー・エム株式会社 ソフトウェア・エバンジェリスト 中林 紀彦
® pureXMLの活用 PHPからXQueryを使用する 日本アイ・ビー・エム株式会社 ソフトウェア・エバンジェリスト 中林 紀彦 © 2009 IBM Corporation XQuery © 2009 IBM Corporation XQuery解説 DB2 9.5新機能概要&XMLハンズオンセミナー資料 – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/001B138C 3. XQuery解説 – XQuery • XQueryが主言語 • オプショナル: XQueryにSQLを埋め込む – SQL/XML • SQL が主言語 • オプショナル: SQLにXQueryを埋め込む 4. XQueryを使ってみよう – サンプル・データベースを使ってXQueryを実行します © 2009 IBM Corporation PHP © 2009 IBM Corporation Windowsサーバ環境のセットアップ DB2のインストール(DB2 Express-C 9.5 for Windows クイックインストール) – http://www.ibm.com/developerworks/jp/offers/db2express-c/installwin_v95/ Apacheのインストール – http://httpd.apache.org/download.cgi – apache_2.2.11-win32-x86-no_ssl.msi PHPのインストール – http://www.php.net/downloads.php – php-5.2.6-win32-installer.msi – 最新の5.2.8にはibm_db2などのExtensionが含まれないので注意 – ibm_db2とPDO_IBMのExtensionをインストール – httpd.confを編集し、index.phpを追加します • DirectoryIndex index.html index.php • Apacheの再起動は忘れずに © 2009 IBM Corporation Windowsクライアント環境のセットアップ(1) IBM Data Studio 2.1(Eclipse 3.4) – ダウンロード • http://www.ibm.com/developerworks/downloads/im/datastudiodev/ • 30日評価版となっていますが、拡張機能以外は無償で利用できます – マニュアル • http://publib.boulder.ibm.com/infocenter/idm/v2r1/index.jsp PDT 2.0 – Data Studioへのインストール • Eclipseの「ソフトウェア更新」で簡単にインストールできます – http://wiki.eclipse.org/PDT/Installation • デバック環境の構成 – http://www.zend.co.jp/tech/index.php?%B4%C4%B6%AD%B9%BD%C3%DB%2F%A5%C7 %A5%D0%A5%C3%A5%B0%B4%C4%B6%AD%A4%CE%BA%EE%C0%AE – All in oneパッケージ(Debugger付)もあります • http://www.zend.com/en/community/pdt © 2009 IBM Corporation 【参考】 デバッグ環境の構成Tips dummy.phpのコピー – PHP Serverの設定で指定したURLで表示される場所にコピー • http://localhost/eclipse/dummy.php クライアントのIPアドレス – Vmwareなどをインストールしていると複数のIPアドレスが振られている ので注意 – zend_debugger.allow_hosts=127.0.0.1/32,192.168.222.1 © 2009 IBM Corporation Windowsクライアント環境のセットアップ(2) httpd.confにワークスペースを追加 <Directory "D:/Eclipse/workspaceds21"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> Alias /eclipse D:/Eclipse/workspaceds21 Eclipse側の設定 – 「ウインドウ」->「設定」 • 「PHP」->「PHP Servers」を変更 • httpd.confに合わせる – 例) /eclipse © 2009 IBM Corporation Windowsクライアント環境のセットアップ(3) © 2009 IBM Corporation pureXMLにアクセスするためのドライバ 「PECL : ibm_db2」 – http://pecl.php.net/package/ibm_db2 「IBM DB2、Cloudscape および Apache Derby」 – http://jp.php.net/manual/ja/book.ibm-db2.php 「PECL : PDO_IBM」 – http://pecl.php.net/package/PDO_IBM 「IBM 関数 (PDO_IBM)」 – http://jp.php.net/manual/ja/ref.pdo-ibm.php 「Zend Core」 – http://www.zend.com/products/zend_core/ © 2009 IBM Corporation PHPからpureXMLを利用するための手順 ① DB2への接続 ② XQuery、SQL/XMLの準備 ③ XQuery、SQL/XMLの実行 ④ 検索結果の取り出し © 2009 IBM Corporation ① DB2への接続 db2_connect – http://jp.php.net/manual/ja/function.db2-connect.php db2_pconnect – http://jp.php.net/manual/ja/function.db2-pconnect.php – コネクションがプールされますが接続数の上限は指定できないので、DB2 の接続コンセントレーターと組み合わせて利用することをお勧めします db2_close – http://jp.php.net/manual/ja/function.db2-close.php © 2009 IBM Corporation ② XQuery、SQL/XMLの準備 db2_prepare – http://jp.php.net/manual/ja/function.db2-prepare.php db2_bind_param – http://jp.php.net/manual/ja/function.db2-bind-param.php © 2009 IBM Corporation ③ XQuery、SQL/XMLの実行 db2_execute – http://jp.php.net/manual/ja/function.db2-execute.php – db2_execute() は、db2_prepare() で準備されたSQL 文を実行します db2_exec – http://jp.php.net/manual/ja/function.db2-exec.php – db2_exec()は、SQL 文を直接実行します © 2009 IBM Corporation ④ 検索結果の取り出し db2_fetch_array – http://jp.php.net/manual/ja/function.db2-fetch-array.php – 結果セット内の行を表す、カラム位置をインデックスとする配列を返します 。インデックスは 0 から始まります db2_fetch_assoc – http://jp.php.net/manual/ja/function.db2-fetch-assoc.php – 結果セット内の行を表す、カラム名をインデックスとする配列を返します。 db2_fetch_both – http://jp.php.net/manual/ja/function.db2-fetch-both.php © 2009 IBM Corporation サンプルコードの説明 © 2009 IBM Corporation 注意点など XQueryを実行する際の注意点 – デフォルトではXML宣言が付くため、db2cli.iniで設定の必要があります • db2cli.iniは、「C:¥Program Files¥ibm¥SQLLIB」以下に置きます • COMMONセクションで、“XMLDeclaration=0”を指定します – PDOではXQueryが実行できないケースがあります • PDOでは、DB2独自関数(db2-fn:xmlcolumnなど)のコロンをパラメータとして 認識してしまいます © 2009 IBM Corporation 【参考】 pureXMLサンプル pureXMLサンプル・データベース – http://ibm.com/developerworks/jp/data/library/dataserver/j_dxmlsampledb/ pureXMLサンプル・アプリケーション – http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0056D80B © 2009 IBM Corporation 【参考】 PHPでXMLを操作する DOMに関するドキュメント – http://jp.php.net/manual/ja/ref.dom.php SimpleXML関数に関するドキュメント – http://jp.php.net/manual/ja/ref.simplexml.php © 2009 IBM Corporation 【参考】 DOMのサンプル <?php // DOMのサンプル $dom = new DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement("response"); $dom->appendChild($root); // エレメント(要素)の追加 $element = $dom->createElement('test', 'This is the root element!'); // アトリビュート(属性)の追加 $element->setAttribute('att', '12345'); // $root->appendChild($element); // echo $dom->saveXML(); ?> © 2009 IBM Corporation 【参考】 SimpleXML関数のサンプル <?php // SimpleXML関数のサンプル $xmls = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><response></response>'); // エレメント(要素)の追加 $xml = $xmls->addChild('rest'); // アトリビュート(属性)の追加 $xml->addAttribute('order', '1'); // エレメント(要素)の追加 $xml->addChild('id', '12345'); // echo $xmls->asXML(); ?> © 2009 IBM Corporation Idea © 2009 IBM Corporation プログラミング・コンテストのヒント XQueryで簡単マッシュアップ・プログラミング – http://www.ibm.com/developerworks/jp/data/library/dataserver/j_dxquerymashup/ © 2009 IBM Corporation END © 2009 IBM Corporation