Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2...

124
PHP-2009 200902Linux Symfoware Server PHPドライバユーザーズガイド

Transcript of Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2...

Page 1: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

PHP-20092009年02月

Linux

Symfoware Server

PHPドライバユーザーズガイド

Page 2: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

まえがき

本書の目的

本書は、PHP(Hypertext Preprocessor)からSymfoware/RDBをアクセスするための機構であるSymfoware関数、Symfoware/RDBなどの

データベースアクセスを抽象化するクラスであるPEAR for Symfoware(PHP Extension and Application Repository for Symfoware)、PHPlib for Symfoware(PHP Base Library for Symfoware)のユーザーズガイドです。

本書の読者

本書は、PHPからSymfoware/RDBのデータベースをアクセスする方に読んでいただくように書かれています。

本書を読むには、以下に示す知識が必要です。

・ Symfoware/RDBの機能およびデータベースの概要

・ SQL文に関する知識

・ Webに関する基本的な知識

・ Apacheに関する基本的な知識

・ PHPに関する基本的な知識

・ HTMLに関する基本的な知識

本書の構成

第1章 PHP Symfowareの概要

PHP、PHP Symfowareの概要について説明しています。

第2章 PHP Symfowareの導入

PHP、PHP Symfowareの導入方法について説明しています。

第3章 PHP Symfowareの使用

PHPからSymfoware/RDBのデータベースをアクセスする方法について説明しています。

第4章 Symfoware関数の仕様

Symfoware関数を用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明しています。

第5章 PEAR for Symfowareの仕様

PEAR for Symfowareを用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明しています。

第6章 PHPlib for Symfowareの仕様

PHPlib for Symfowareを用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明しています。

第7章 PHP Symfowareの環境設定

PHP Symfowareの環境を設定する方法について説明しています。

第8章 RDBコマンドの呼び出し

PHPのコマンド呼び出し機能を用いてPHPからRDBコマンドを呼び出す方法について説明しています。

第9章 注意事項

PHPからSymfoware/RDBのデータベースをアクセスするときの注意事項について説明しています。

付録A connect、pconnectのパラメタの記述形式

connect、pconnectで指定するパラメタの記述形式について説明しています。

付録B PHP Symfowareの修正履歴

PHP Symfowareのソースの修正履歴について説明しています。

- i -

Page 3: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

付録C PHP Symfowareのソースの構成

PHP Symfowareのソースの構成について説明しています。

用語集

本書で使用する用語の意味を定義しています。

本書の位置づけ

Symfoware Serverの関連マニュアルと、本書中での表記について以下に示します。Symfoware Serverのマニュアルは、製品のCD-ROMに添付されています。

本書での表記 マニュアル名

スタートガイド サーバ編 FUJITSU Symfoware Server スタートガイド サーバ

RDBユーザーズガイド

応用プログラム開発編

FUJITSU Symfoware Server RDBユーザーズガイド

応用プログラム開発編

RDBユーザーズガイド

データベース定義編

FUJITSU Symfoware Server RDBユーザーズガイド

データベース定義編

SQLリファレンスガイド FUJITSU Symfoware Server SQLリファレンスガイド

RDB管理者ガイド(注) Symfoware Server RDB管理者ガイド

注) Symfoware Serverの製品のOSとVLにより参照マニュアルが異なります。

Symfoware/RDBが出力するメッセージの処置を参照する

Symfoware/RDBが出力するメッセージの意味および利用者の処置は、RDBコマンド(rdbprtmsgコマンド)を利用して参照できます。

注意事項

本書の中でマニュアル作成時点でのWebのURL(Uniform Resource Locator)を記載していますが、URLがなくなっている場合があり

ます。

本書の中にマニュアル作成時点での 新のソフトウェアのバージョンを記載していますが、現在ではさらに 新のバージョンが提供さ

れている場合があります。

本書の対応する製品

・ Apache 1.3.26

・ PHP 4.2.2

・ PEAR(PHPに同梱)

・ PHPlib 7.4-pre1

・ Symfoware関数 1.0.0

・ PEAR for Symfoware 1.0.0

・ PHPlib for Symfoware 1.0.0

・ Symfoware Server Standard Edition V5.0L10

説明用モデルについて

本書で使用するデータベースは架空のものであり、現実のものとは何の関係もありません。

略称

本書で使用する略称を以下に示します。

- ii -

Page 4: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

略称 正式名称

Windows Microsoft(R) Windows(R) 95 operating system、

Microsoft(R) Windows(R) 98 operating system、

Microsoft(R) Windows(R) 98 Second Edition、Microsoft(R) Windows(R) Millennium Edition、Microsoft(R) Windows NT(R) Server, EnterpriseServer Edition、Microsoft(R) Windows NT(R) Server, TerminalServer Edition、Microsoft(R) Windows NT(R) Server networkoperating system、

Microsoft(R) Windows NT(R) Workstation operatingsystem、

Microsoft(R) Windows(R) 2000 Professionaloperating system、

Microsoft(R) Windows(R) 2000 Advanced Serveroperating system、

Microsoft(R) Windows(R) 2000 Server operatingsystem、

Microsoft(R) Windows(R) 2000 Professionaloperating system、

Microsoft(R) Windows(R) XP Professional、および

Microsoft(R) Windows(R) XP Home Edition

Windows NT/2000/XP Microsoft(R) Windows NT(R) Server, EnterpriseServer Edition、Microsoft(R) Windows NT(R) Server, TerminalServer Edition、Microsoft(R) Windows NT(R) Server networkoperating system、

Microsoft(R) Windows NT(R) Workstation operatingsystem、

Microsoft(R) Windows(R) 2000 Professionaloperating system、

Microsoft(R) Windows(R) 2000 Advanced Serveroperating system、

Microsoft(R) Windows(R) 2000 Server operatingsystem、

Microsoft(R) Windows(R) 2000 Professionaloperating system、および

Microsoft(R) Windows(R) XP Professional

Windows 2000/XP Microsoft(R) Windows(R) 2000 Professionaloperating system、

Microsoft(R) Windows(R) 2000 Advanced Serveroperating system、

Microsoft(R) Windows(R) 2000 Server operatingsystem、

Microsoft(R) Windows(R) 2000 Professionaloperating system および

Microsoft(R) Windows(R) XP Professional

商標

Apacheは、Apache Software Foundation.の著作です。

PHPは、PHP Group.の著作です。

GNUgccは、Free Software Foundation,Inc. の著作です。

- iii -

Page 5: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

GNUzipは、Free Software Foundation,Inc. の著作です。

Microsoft、Windows、Windows 95/98/Me/NT/2000/XPは、米国Microsoft Corporationの米国およびそのほかの国での登録商標です。

UNIXは、The Open Groupの米国ならびにほかの国での登録商標です。

Linuxは、Linus Torvalds氏の米国およびその他の国における登録商標あるいは商標です。

Symfowareは、富士通株式会社の登録商標です。

そのほか、本書に記載されている会社名および製品名は、それぞれ各社の商標または登録商標です。

なお、本マニュアルでは、(R)、TM表記を省略しています。

平成21年2月

平成14年 11月 初版

平成21年 2月 第2版

告知文

[高度な安全性が要求される用途への使用について]

本製品は、一般事務、パーソナル用、家庭用、通常の産業等の一般用途を想定して開発・設計・製造されているものであり、原子力施

設における核反応制御、航空機自動飛行機制御、航空交通管制、大量輸送システムにおける運行制御、生命維持のための医療用

機器、兵器システムにおけるミサイル発射制御など、極めて高度な安全性が要求され、仮に当該安全性が確保されない場合、直接生

命・身体に対する重大な危険性を伴う用途(以下、「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではあり

ません。

お客さまは本製品を必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでください。また、お客さまがハイセ

イフティ用途に本製品を使用したことにより発生する、お客様または第三者からのいかなる請求または損害賠償に対しても富士通株

式会社およびその関連会社は一切責任を負いかねます。

All Rights Reserved, Copyright(C) 富士通株式会社 2009

- iv -

Page 6: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

目 次

第1章 PHP Symfowareの概要..................................................................................................................................................11.1 PHPとは...............................................................................................................................................................................................11.2 PHP Symfowareとは............................................................................................................................................................................1

第2章 PHP Symfowareの導入..................................................................................................................................................32.1 導入方法.............................................................................................................................................................................................3

2.1.1 インストール済みパッケージのアンインストール.........................................................................................................................32.1.2 アーカイバのインストール............................................................................................................................................................42.1.3 コンパイラのインストール..............................................................................................................................................................42.1.4 Symfowareのインストール............................................................................................................................................................42.1.5 Apacheのインストール..................................................................................................................................................................42.1.6 PHPのビルドで使用するコマンドのインストール.........................................................................................................................52.1.7 PHPのインストール.......................................................................................................................................................................52.1.8 PHP Symfowareのインストール....................................................................................................................................................62.1.9 Apacheのセットアップ.................................................................................................................................................................10

第3章 PHP Symfowareの使用................................................................................................................................................123.1 PHPスクリプトの作成および実行......................................................................................................................................................123.2 PHP Symfowareの規約.....................................................................................................................................................................13

3.2.1 PHP Symfowareの仕様..............................................................................................................................................................133.2.2 変数の規約.................................................................................................................................................................................133.2.3 真、偽..........................................................................................................................................................................................143.2.4 SQL文の規約.............................................................................................................................................................................14

第4章 Symfoware関数の仕様................................................................................................................................................. 164.1 Symfoware関数の概要.....................................................................................................................................................................16

4.1.1 Symfoware関数のスクリプト例...................................................................................................................................................164.2 Symfoware関数.................................................................................................................................................................................17

4.2.1 symfoware_autocommit..............................................................................................................................................................174.2.2 symfoware_binmode...................................................................................................................................................................184.2.3 symfoware_close........................................................................................................................................................................194.2.4 symfoware_close_all..................................................................................................................................................................204.2.5 symfoware_columnprivileges.....................................................................................................................................................204.2.6 symfoware_columns...................................................................................................................................................................204.2.7 symfoware_commit....................................................................................................................................................................234.2.8 symfoware_connect....................................................................................................................................................................234.2.9 symfoware_cursor.......................................................................................................................................................................244.2.10 symfoware_do...........................................................................................................................................................................254.2.11 symfoware_error.......................................................................................................................................................................254.2.12 symfoware_errormsg................................................................................................................................................................274.2.13 symfoware_exec.......................................................................................................................................................................274.2.14 symfoware_execute..................................................................................................................................................................284.2.15 symfoware_fetch_array............................................................................................................................................................294.2.16 symfoware_fetch_into..............................................................................................................................................................304.2.17 symfoware_fetch_object...........................................................................................................................................................314.2.18 symfoware_fetch_row..............................................................................................................................................................324.2.19 symfoware_field_len................................................................................................................................................................344.2.20 symfoware_field_name.............................................................................................................................................................344.2.21 symfoware_field_num..............................................................................................................................................................354.2.22 symfoware_field_precision.......................................................................................................................................................354.2.23 symfoware_field_scale.............................................................................................................................................................364.2.24 symfoware_field_type..............................................................................................................................................................364.2.25 symfoware_foreignkeys............................................................................................................................................................374.2.26 symfoware_free_result..............................................................................................................................................................374.2.27 symfoware_gettypeinfo............................................................................................................................................................384.2.28 symfoware_isnull......................................................................................................................................................................41

- v -

Page 7: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

4.2.29 symfoware_longreadlen............................................................................................................................................................424.2.30 symfoware_next_result.............................................................................................................................................................434.2.31 symfoware_num_fields.............................................................................................................................................................434.2.32 symfoware_num_rows..............................................................................................................................................................444.2.33 symfoware_pconnect................................................................................................................................................................454.2.34 symfoware_prepare...................................................................................................................................................................464.2.35 symfoware_primarykeys...........................................................................................................................................................464.2.36 symfoware_procedurecolumns.................................................................................................................................................484.2.37 symfoware_procedures.............................................................................................................................................................514.2.38 symfoware_result......................................................................................................................................................................524.2.39 symfoware_result_all................................................................................................................................................................534.2.40 symfoware_rollback..................................................................................................................................................................534.2.41 symfoware_setoption................................................................................................................................................................544.2.42 symfoware_specialcolumns......................................................................................................................................................544.2.43 symfoware_statistics.................................................................................................................................................................544.2.44 symfoware_tableprivileges.......................................................................................................................................................544.2.45 symfoware_tables.....................................................................................................................................................................54

第5章 PEAR for Symfowareの仕様.........................................................................................................................................575.1 PEAR for Symfowareの概要............................................................................................................................................................57

5.1.1 PEARの特徴..............................................................................................................................................................................575.1.2 PEAR for Symfowareのスクリプト例..........................................................................................................................................57

5.2 DBクラスのインクルード....................................................................................................................................................................585.2.1 require_once( "DB.php" )...........................................................................................................................................................58

5.3 DBクラス.............................................................................................................................................................................................585.3.1 connect........................................................................................................................................................................................585.3.2 disconnect...................................................................................................................................................................................605.3.3 isWarning....................................................................................................................................................................................615.3.4 isError.........................................................................................................................................................................................615.3.5 quote............................................................................................................................................................................................615.3.6 provides.......................................................................................................................................................................................625.3.7 setFetchMode..............................................................................................................................................................................635.3.8 prepare........................................................................................................................................................................................645.3.9 execute........................................................................................................................................................................................655.3.10 executeMultiple........................................................................................................................................................................665.3.11 query.........................................................................................................................................................................................675.3.12 limitQuery.................................................................................................................................................................................685.3.13 getOne.......................................................................................................................................................................................685.3.14 getRow......................................................................................................................................................................................705.3.15 getCol........................................................................................................................................................................................715.3.16 getAssoc....................................................................................................................................................................................725.3.17 getAll .......................................................................................................................................................................................745.3.18 affectedRows............................................................................................................................................................................765.3.19 nextId........................................................................................................................................................................................775.3.20 createSequence..........................................................................................................................................................................775.3.21 dropSequence............................................................................................................................................................................775.3.22 tableInfo....................................................................................................................................................................................775.3.23 getListOf...................................................................................................................................................................................775.3.24 autoCommit..............................................................................................................................................................................785.3.25 commit......................................................................................................................................................................................785.3.26 rollback.....................................................................................................................................................................................795.3.27 errorNative................................................................................................................................................................................79

5.4 DB_Resultクラス................................................................................................................................................................................805.4.1 fetchRow.....................................................................................................................................................................................805.4.2 fetchInto......................................................................................................................................................................................825.4.3 numCols......................................................................................................................................................................................845.4.4 numRows....................................................................................................................................................................................845.4.5 nextResult...................................................................................................................................................................................85

- vi -

Page 8: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

5.4.6 free..............................................................................................................................................................................................855.5 DB_Errorクラス..................................................................................................................................................................................86

5.5.1 getMessage..................................................................................................................................................................................865.5.2 toString........................................................................................................................................................................................87

5.6 DB_Warningクラス.............................................................................................................................................................................875.7 Cacheクラス........................................................................................................................................................................................87

第6章 PHPlib for Symfowareの仕様.......................................................................................................................................886.1 PHPlib for Symfowareの概要...........................................................................................................................................................88

6.1.1 PHPlibの特徴.............................................................................................................................................................................886.1.2 PHPlibで使用するファイル.........................................................................................................................................................88

6.2 PHPlibの使用例................................................................................................................................................................................906.2.1 セション機能の使用例...............................................................................................................................................................906.2.2 認証機能の使用例.....................................................................................................................................................................916.2.3 パーミッション管理機能の使用例..............................................................................................................................................926.2.4 ユーザ変数機能の使用例.........................................................................................................................................................93

第7章 PHP Symfowareの環境設定.........................................................................................................................................947.1 PHP動作環境ファイル.......................................................................................................................................................................947.2 パラメタの詳細...................................................................................................................................................................................94

7.2.1 symfoware.default_db.................................................................................................................................................................947.2.2 symfoware.default_user..............................................................................................................................................................947.2.3 symfoware.default_pw................................................................................................................................................................957.2.4 symfoware.allow_persistent.......................................................................................................................................................957.2.5 symfoware.check_persistent.......................................................................................................................................................957.2.6 symfoware.max_persistent.........................................................................................................................................................967.2.7 symfoware.max_links.................................................................................................................................................................967.2.8 symfoware.defaultlrl...................................................................................................................................................................967.2.9 symfoware.defaultbinmode.........................................................................................................................................................97

第8章 RDBコマンドの呼び出し.................................................................................................................................................988.1 RDBコマンドの呼び出し方法...........................................................................................................................................................988.2 RDBコマンドの呼び出し例...............................................................................................................................................................98

8.2.1 systemを用いたRDBコマンドの呼び出し..................................................................................................................................988.2.2 execを用いたRDBコマンドの呼び出し......................................................................................................................................998.2.3 popenを用いたRDBコマンドの呼び出し....................................................................................................................................99

第9章 注意事項.....................................................................................................................................................................1009.1 PHP Symfowareの制限...................................................................................................................................................................1009.2 RDBコマンドの呼び出しの制限.....................................................................................................................................................1009.3 マルチバイト文字列の注意.............................................................................................................................................................101

9.3.1 マルチバイト文字列の問題......................................................................................................................................................1019.3.2 UTF-8........................................................................................................................................................................................1019.3.3 マルチバイト対応関数..............................................................................................................................................................1029.3.4 シフトJIS対応PHP.....................................................................................................................................................................102

付録A connect、pconnectのパラメタの記述形式....................................................................................................................103

付録B PHP Symfowareの修正履歴.......................................................................................................................................105

付録C PHP Symfowareのソースの構成................................................................................................................................106

用語集...................................................................................................................................................................................107

索引......................................................................................................................................................................................114

- vii -

Page 9: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第1章 PHP Symfowareの概要

本章では、PHP、PHP Symfowareの概要について説明します。

1.1 PHPとは

1.2 PHP Symfowareとは

1.1 PHPとは

PHPについて説明します。

PHPとは

PHP(Hypertext Preprocessor)はインタプリタ型のプログラミング言語です。PHPはWWWサーバ上で動作し、動的なHTML文書を作成

することができます。

PHPスクリプト、PHPモジュール、クラスインタフェース

PHPが処理するプログラムのことをPHPスクリプトと呼びます。

PHPスクリプトから関数インタフェースで外部プログラムを呼び出すことができます。外部プログラムのことをPHPモジュールと呼びます。

PHP 3でオブジェクト思考の概念が追加され、クラスインタフェースでプログラムの呼び出しができるようになりました。

PHPの公開形態

PHPグループが、PHPソースをWebで公開しています。

PHPはPHP Licenseと呼ばれるライセンスに基づいて公開されています。動作保証がないといったPHP Licenseの各種条件を承諾する

ことにより、無償でPHPを使用することができます。

LinuxマシンにはPHPがインストールされていますが、 新のPHPよりも古いことが多いです。 新のPHPではセキュリティ問題といった

重要な修正が行われることがあります。また、 新のPHPのRPMのパッケージが公開されるまでに時間がかかることがあります。また、PHPのRPMのパッケージには期待しているコンパイルオプションが指定されずにビルドされている場合があります。よって、PHP開発チーム

が公開している 新のPHPソースをビルドしてインストールすることが望ましいです。

1.2 PHP Symfowareとは

PHP Symfowareについて説明します。

従来のデータベースのアクセス

これまで、各データベースベンダは、SQL文をC言語などのプログラミング言語に埋め込むといったデータベースのアクセスの手段を

提供してきました。

この機能を用いて、WWWサーバ上で動作するCGIプログラムを作成してきました。データベースアクセスの手段は、各データベース

ベンダで統一されておらず、完全な互換性は保証できませんでした。

PHPのデータベースアクセス

PHPスクリプトからデータベースをアクセスするために、PHP開発チームによって各データベースベンダ固有のデータベースアクセス処

理を行う関数インタフェースのPHPモジュールが用意されました。

複数のデータベースベンダのデータベースをアクセスする場合は、それぞれのデータベースアクセスの関数を呼び分ける必要がある

という欠点があります。

PHPのデータベースアクセスの抽象化

複数のデータベースベンダのデータベースアクセスを1つのクラスインタフェースで行うために、PEAR(PHP Extension and ApplicationRepository)と呼ばれるPHPスクリプトで記述されたクラスインタフェースが用意されました。

PEARには、各データベースベンダ関数をハンドリングする処理が用意されています。

- 1 -

Page 10: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

PHPのライブラリ

セション機能、認証機能、パーミッション管理機能およびユーザ変数機能を行うために、PHPlib(PHP Base Library)と呼ばれるPHPスクリプトで記述されたクラスインタフェースが用意されました。

セション機能、認証機能、パーミッション管理機能およびユーザ変数機能の情報はデータベースに保存されます。

PHPlibには、各データベースベンダ関数をハンドリングする処理が用意されています。

PHP Symfowareとは

PHP Symfowareは、Symfoware関数と、PHPlib、PEARから呼び出されるSymfoware関数のハンドリング処理を提供します。これにより、

PHPスクリプトからSymfoware/RDBへのアクセスを可能にします。

PHP Symfowareの公開形態

PHP、PEARの公開形態と同様に、Symfoware関数、PEAR for SymfowareはPHP Licenseと呼ばれるライセンスに基づいて公開しま

す。動作保証がないといったPHP Licenseの各種条件を承諾することにより、無償でSymfoware関数、PEAR for Symfowareを使用する

ことができます。

PHPlibの公開形態と同様に、PHPlib for Symfowareは、LGPL(Library GNU General Public License:ライブラリ一般公共利用承諾、ま

たは、Lesser GNU General Public License:劣等一般公共利用承諾)と呼ばれるライセンスに基づいて公開します。動作保証がないといった

LGPLの各種条件を承諾することにより、無償でPHPlib for Symfowareを使用することができます。

PHP Symfowareは充分なテストを行った上でリリースしていますが、PHP、PHP Symfowareの 終的な動作保証については、ご自身の

責任でお願いします。

- 2 -

Page 11: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第2章 PHP Symfowareの導入

本章では、PHP、PHP Symfowareの導入について説明します。

2.1 導入方法

2.1 導入方法

PHPおよびPHP Symfowareの導入方法について説明します。

各ソフトウェアのデフォルトの設定で説明します。デフォルト以外で設定を行った場合は、適時、読み替えてください。

2.1.1 インストール済みパッケージのアンインストール

インストール済みパッケージのアンインストールについて説明します。

インストール済みパッケージ

すでにインストールされているApacheやPHPを使用する場合、デフォルトの設定でないことがありますので、以降の作業で、各自の設

定値のまま読み替える必要があります。

また、Symfoware関数は、PHP 4.1.0で規定された内部インタフェースを使用していますので、PHP 4.1.0未満でSymfoware関数を使用

することはできません。

また、すでにインストールされているApacheやPHPのバージョンは古いことが多く、すでにインストールされているApacheやPHPを使用

する場合、既知のセキュリティホール問題となることや、 新にて追加された機能を使用することができないことがあります。

よって、すでにインストールされているApache、PHPをアンインストールし、 新のApache、PHPをインストールすることを推奨します。

インストール済みパッケージのアンインストール

1. スーパ・ユーザでログインしてください。

2. 以下のコマンドでPHPやApacheがインストールされていることを確認してください。

rpm -qa | grep php

rpm -qa | grep apache

3. 以下のコマンドでPHPやApacheをアンインストールしてください。

rpm -qa | grep php | xargs rpm -e

rpm -qa | grep apache | xargs rpm -e

4. アンインストールで、“エラー: これらのパッケージを削除すると依存関係を破壊します:”というエラーが発生することがあります。

このとき、3.と同様の操作で依存関係にあるパッケージを削除するか、以下のコマンドで依存関係にあるパッケージを無視して

PHP、Apacheをアンインストールしてください。

rpm -qa | grep php | xargs rpm -e --nodeps

rpm -qa | grep apache | xargs rpm -e --nodeps

5. アンインストールで、“cannot remove /絶対パス名 - directory not empty”というエラーが発生することがありますが、アンインストー

ル自体は成功しています。ディレクトリ配下のファイルは、必要に応じてバックアップしてください。

6. 以下のコマンドでPHPやApacheがインストールされていないことを確認してください。

rpm -qa | grep php

rpm -qa | grep apache

7. 以下のコマンドでApache動作環境ファイルのディレクトリに移動してください。

cd /usr/local/apache/conf

- 3 -

Page 12: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

8. 以下のコマンドでApache動作環境ファイルを削除してください。

rm httpd.conf

2.1.2 アーカイバのインストール

アーカイバのインストールについて説明します。

アーカイバのインストール

アーカイバのインストールの作業は不要です。

2.1.3 コンパイラのインストール

コンパイラのインストールについて説明します。

コンパイラのインストール

コンパイラのインストールの作業は不要です。

2.1.4 Symfowareのインストール

Symfowareのインストールについて説明します。

Symfoware/RDBにリモートアクセスする場合のSymfowareのインストール

1. Symfoware Clientをインストールしてください。

Symfoware/RDBにローカルアクセスする場合のSymfowareのインストール

1. Symfoware Serverをインストールしてください。

2.1.5 Apacheのインストール

Apacheのインストールについて説明します。

Apacheのインストール

1. Apacheグループのミラーサイト

(http://www.apache.jp/misc/download.html)から、Apacheソースのアーカイブ(apache-1.3.26.tar.Z)を入手してください。

2. スーパ・ユーザでログインしてください

3. Apacheソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてください。

4. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

5. 以下のコマンドでApacheソースを展開してください。

zcat apache-1.3.26.tar.Z | tar xvf -

6. 以下のコマンドでApacheソースディレクトリに移動してください。

cd /tmp/apache-1.3.26

7. Apacheモジュール版PHPインタプリタを使用する場合、以下のコマンドでビルドの準備を行ってください。

./configure --enable-module=so

- 4 -

Page 13: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

8. コマンドライン版PHPインタプリタを使用する場合、以下のコマンドでビルドの準備を行ってください。

./configure

9. 以下のコマンドでApacheをビルドおよびインストールしてください。

make

make install

注意

Apacheのインストールをやりなおす場合、Apacheソースのディレクトリを削除して、手順.3からやりなおしてください。

2.1.6 PHPのビルドで使用するコマンドのインストール

PHPのビルドで使用するコマンドのインストールについて説明します。

PHPでビルドするコマンドのインストール

PHPでビルドするコマンドのインストールの作業は不要です。

2.1.7 PHPのインストール

PHPのインストールについて説明します。

PHPのインストール

1. PHPグループ(http://www.php.net/downloads.php)から、PHPソースのアーカイブ(php-4.2.2.tar.gz)を入手してください。

2. スーパ・ユーザでログインしてください。

3. PHPソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてください。

4. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

5. 以下のコマンドでPHPソースを展開してください。

gunzip -c php-4.2.2.tar.gz | tar xvf -

6. 以下のコマンドでPHPソースディレクトリに移動してください。

cd /tmp/php-4.2.2

7. Apacheモジュール版PHPインタプリタを作成する場合、以下のコマンドでビルドの準備を行ってください。

./buildconf

./configure --without-mysql --enable-mbstring --enable-mbregex --enable-mbstr-euc-trans --with-

apxs=/usr/local/apache/bin/apxs

8. コマンドライン版PHPインタプリタを作成する場合、以下のコマンドでビルドの準備を行ってください。

./buildconf

./configure --without-mysql --enable-mbstring --enable-mbregex --enable-mbstr-euc-trans --

enable-force-cgi-redirect

9. 以下のコマンドでPHPをビルドおよびインストールしてください。

make

make install

- 5 -

Page 14: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

10. 以下のコマンドでPHP動作環境ファイル雛形のディレクトリに移動してください。

cd /tmp/php-4.2.2

11. 以下のコマンドでPHP動作環境ファイルを複写します。

cp php.ini-dist /usr/local/lib/php.ini

注意

PHPのインストールをやりなおす場合、PHPソースのディレクトリを削除して、手順.3からやりなおしてください。

2.1.8 PHP Symfowareのインストール

PHP Symfowareのインストールについて説明します。

PEARを使用しない場合、PEARのセットアップおよびPEAR for Symfowareのインストールの作業は不要です。

PHPlibを使用しない場合、PHPlibのインストール、PHPlibのセットアップおよびPHPlib for Symfowareのインストールの作業は不要で

す。

Symfoware関数のインストール

1. Symfoware関数ソ+ースのアーカイブ(php-symfoware-1.0.0.tar.gz)を入手してください。

2. スーパ・ユーザでログインしてください。

3. Symfoware関数ソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてください。

4. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

5. 以下のコマンドでPHP Symfowareソースを展開してください。

gunzip -c php-symfoware-1.0.0.tar.gz | tar xvf -

6. 以下のコマンドでSyfmoware関数ソースディレクトリに移動してください。

cd /tmp/php-symfoware-1.0.0

7. 以下のコマンドでビルドの準備の初期化を行なってください。

phpize

8. Symfowareをデフォルトのディレクトリ配下にインストールした場合、以下のコマンドでビルドの準備を行なってください。

./configure --with-symfoware

9. Symfowareをデフォルト以外のディレクトリ配下にインストールした場合、以下のコマンドでビルドの準備を行なってください。

./configure --with-symfoware=/インストール先ディレクトリ名

10. 以下のコマンドでSymfoware関数をビルドおよびインストールしてください。

make

11. 以下のコマンドでPHP Symfoware関数モジュールのディレクトリに移動してください。

cd /tmp/php-symfoware-1.0.0/modules

12. 以下のコマンドでPHP Symfoware関数モジュールを複写してください。

cp php_symfoware.so /usr/local/lib/php/extensions

- 6 -

Page 15: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

13. 以下のコマンドでPHP動作環境ファイルのディレクトリに移動してください。

cd /usr/local/lib

14. 以下のコマンドでPHP動作環境ファイルを編集してください。

vi php.ini

15. PHP動作環境ファイルに下記のパラメタを設定してください。

extension_dir = /usr/local/lib/php/extensions

extension=php_symfoware.so

PEARのセットアップ

1. スーパ・ユーザでログインしてください。

2. 以下のコマンドでPHP動作環境ファイルのディレクトリに移動してください。

cd /usr/local/lib

3. 以下のコマンドでPHP動作環境ファイルを編集してください。

vi php.ini

4. PHP動作環境ファイルに下記のパラメタを設定してください。複数のディレクトリを指定する場合、コロン(:)で区切って記述しま

す。

include_path = ".:/usr/local/lib/php"

PEAR for Symfowareのインストール

1. PEAR for Symfowareソースのアーカイブ

(pear-symfoware-1.0.0.tar.gz)を入手してください。

2. スーパ・ユーザでログインしてください。

3. PEAR for Symfowareソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてください。

4. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

5. 以下のコマンドでPEARソースを展開してください。

gunzip -c pear-symfoware-1.0.0.tar.gz | tar xvf -

6. 以下のコマンドでPEARソースディレクトリに移動してください。

cd /tmp/pear-symfoware-1.0.0/DB

7. 以下のコマンドでPEARソースを複写してください。

cp -r * /usr/local/lib/php/DB

8. 以下のコマンドでPEARソースディレクトリに移動してください。

cd /usr/local/lib/php

9. 以下のコマンドでPEARソースファイルを編集してください。

vi DB.php

- 7 -

Page 16: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

10. PEARソースファイルを下記のように修正してください。

【修正前】

// Find protocol and hostspec

// $dsn => proto(proto_opts)/database

if (preg_match('|^(.+?)¥((.*?)¥)/?(.*?)$|', $dsn, $match)) {

【修正後】

// Find protocol and hostspec

// $dsn => proto(proto_opts)/database

//if (preg_match('|^(.+?)¥((.*?)¥)/?(.*?)$|', $dsn, $match)) {

if ( ($parsed['phptype'] != "symfoware") &&

preg_match('|^(.+?)¥((.*?)¥)/?(.*?)$|', $dsn, $match)) {

PHPlibのインストール

1. オープンソース開発ネットワーク

(http://sourceforge.net/projects/phplib/)から、PHPlibソースのアーカイブ(phplib-7.4-pre1.tar.gz)を入手してください。

2. PHPの参考書籍の著書のサイト

(http://www.geocities.jp/rui_hirokawa/php/php-book2/)から、PHPlibソースパッチのアーカイブ(phplib-patched.tar.gz)を入手し

てください。

3. スーパ・ユーザでログインしてください。

4. 以下のコマンドでPHPライブラリディレクトリに移動してください。

cd /usr/local/lib/php

5. 以下のコマンドでPHPlibソースのディレクトリを作成してください。

mkdir phplib

6. PHPlibソースのアーカイブ、PHPlibソースパッチのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてくだ

さい。

7. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

8. 以下のコマンドでPHPlibソースを展開してください。

gunzip -c phplib-7.4-pre1.tar.gz | tar xvf -

9. 以下のコマンドでPHPlibソースパッチを展開してください。

gunzip -c phplib-patched.tar.gz | tar xvf -

10. 以下のコマンドでPHPlibソースのディレクトリに移動してください。

cd /tmp/phplib-7.4-pre1/php

11. 以下のコマンドでPHPlibソースを複写してください。

cp -r * /usr/local/lib/php/phplib

12. 以下のコマンドでPHPlibソースパッチのディレクトリに移動してください。

cd /tmp/phplib

- 8 -

Page 17: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

13. 以下のコマンドでPHPlibソースパッチを複写してください。

cp session.inc setup.inc user.inc /usr/local/lib/php/phplib

14. 以下のコマンドでPHPlibのディレクトリに移動してください。

cd /usr/local/lib/php/phplib

15. 以下のコマンドでファイル名を変更してください。

mv migrate_to_md5.php3 migrate_to_md5.php

mv prepend.php3 prepend.php

mv table_select_js.php3 table_select_js.php

PHPlibのセットアップ

1. スーパ・ユーザでログインしてください。

2. 以下のコマンドでPHP動作環境ファイルのディレクトリに移動してください。

cd /usr/local/lib

3. 以下のコマンドでPHP動作環境ファイルを編集してください。

vi php.ini

4. PHP動作環境ファイルに下記のパラメタを設定してください。複数のディレクトリを指定する場合、コロン(:)で区切って記述しま

す。

include_path = ".:/usr/local/lib/php/phplib"

register_globals = On

PHPlib for Symfowareのインストール

1. PHPlib for Syfmowareソースのアーカイブ(phplib-symfoware-1.0.0.tar.gz)を入手してください。

2. スーパ・ユーザでログインしてください。

3. PHPlib for Symfowareソースのアーカイブを任意の作業ディレクトリ(ここでは/tmpと仮定します)に置いてください。

4. 以下のコマンドで任意の作業ディレクトリに移動してください。

cd /tmp

5. 以下のコマンドでPHPlib for Symfowareソースを展開してください。

gunzip -c phplib-symfoware-1.0.0.tar.gz | tar xvf -

6. 以下のコマンドでPHPlib for Symfowareソースディレクトリに移動してください。

cd /tmp/phplib-symfoware-1.0.0/php

7. 以下のコマンドでPHPlib for Symfowareソースを複写してください。

cp -r * /usr/local/lib/php/phplib

8. 以下のコマンドでPHPlibのセション機能、認証機能、パーミッション管理機能、ユーザ変数機能で用いるデータベース定義の

ディレクトリに移動してください。

cd /tmp/phplib-symfoware-1.0.0/stuff

9. 以下のPHPlibで用いるデータベース定義のファイルをSymfowareサーバのマシンの任意のディレクトリに複写してください。

- phplib_u_create.sh

- phplib_u_create_database.symfo

- 9 -

Page 18: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

- phplib_u_insert_database.symfo

10. Symfowareサーバのマシンに、データベースを作成する権限を持つユーザでログインしてください。

11. データベースを作成する権限を持つユーザの環境変数RDBNAME、LD_LIBRARY_PATH、LD_PRELOADを設定してくださ

い。環境変数RDBNAME、LD_LIBRARY_PATH、LD_PRELOADの詳細は、“RDBユーザーズガイド 応用プログラム開発編”

の“応用プログラムの起動”を参照してください。

12. 以下のPHPlibのセション機能、認証機能、パーミッション管理機能およびユーザ変数機能で用いるデータベース定義のファイル

に記述されている各定義のSQL文を適宜修正してください。

- phplib_u_create.sh

- phplib_u_create_database.symfo

- phplib_u_insert_database.symfo

13. 以下のコマンドでデータベースを作成してください。

sh phplib_u_create.sh

注意

Symfoware関数のインストールをやりなおす場合、Symfoware関数ソースのディレクトリを削除して、手順.3からやりなおしてくだ

さい。

2.1.9 Apacheのセットアップ

Apacheのセットアップについて説明します。

Apacheのセットアップ

1. スーパ・ユーザでログインしてください。

2. 以下のコマンドでApache動作環境ファイルのディレクトリに移動してください。

cd /usr/local/apache/conf

3. 以下のコマンドでApache動作環境ファイルを開いてください。

vi httpd.conf

4. Apache動作環境ファイルの下記のディレクティブの内容を確認してください。

Port 80

ServerName ホスト名

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

5. Apache動作環境ファイルに下記のディレクティブを設定してください。

Alias /example/ "/任意の絶対パス/example/"

6. Apache動作環境ファイルに下記のディレクティプを設定してください。

AddType application/x-httpd-php .php

7. Apacheモジュール版PHPインタプリタを設定する場合、Apache動作環境ファイルの下記のディレクティブの内容を確認してくだ

さい。

LoadModule php4_module libexec/libphp4.so

- 10 -

Page 19: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

8. Apache動作環境ファイルにClearModuleListディレクティブが指定されている場合、Apache動作環境ファイルに下記のディレク

ティブを指定してください。

AddModule mod_php4.c

9. コマンドライン版PHPインタプリタを設定する場合、Apache動作環境ファイルに下記のディレクティブを設定してください。

Action application/x-httpd-php /cgi-bin/php

10. Apache設定ファイルに下記のディレクティブを設定してください。

PassEnv LD_LIBRARY_PATH

PassEnv LD_PRELOAD

11. PHPスクリプトからローカルのSymfoware/RDBに対するRDBコマンドを呼び出す場合、Apache動作環境ファイルに下記のディレ

クティブを設定してください。

PassEnv PATH

PassEnv LANG

12. コマンドライン版PHPインタプリタを設定する場合、以下のコマンドでPHPインタプリタのディレクトリに移動してください。

cd /usr/local/bin

13. コマンドライン版PHPインタプリタを設定する場合、以下のコマンドでPHPインタプリタを複写してください。

cp php /usr/local/apache/cgi-bin

14. スーパ・ユーザの環境変数LD_LIBRARY_PATH、LD_PRELOADを設定してください。環境変数LD_LIBRARY_PATH、

LD_PRELOADの詳細は、“RDBユーザーズガイド 応用プログラム開発編”の“応用プログラムの起動”を参照してください。

15. PHPスクリプトからローカルのSymfoware/RDBに対するRDBコマンドを呼び出す場合、スーパ・ユーザの環境変数PATH、LANGを設定してくたざい。環境変数PATH、LANGの詳細は、“スタートガイド サーバ編”の“環境変数の設定”を参照してください。

16. 以下のコマンドでApache起動コマンドのディレクトリに移動してください。

cd /usr/local/apache/bin

17. 以下のコマンドでApache動作環境ファイルの内容の妥当性をチェックしてください。

./apachectl configtest

18. 以下のコマンドでApacheを起動してください。

./apachectl start

注意

Symfoware関数のインストールやApacheのセットアップをやりなおす場合、以下のコマンドでApacheを停止してからセットアップ

をやりなおしてください。restartオプションでApacheを再起動した場合は、環境変数の設定は変更されないことに注意してくださ

い。

./apachectl stop

- 11 -

Page 20: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第3章 PHP Symfowareの使用

本章では、PHPからSymfoware/RDBのデータベースをアクセスする方法について説明します。

3.1 PHPスクリプトの作成および実行

3.2 PHP Symfowareの規約

3.1 PHPスクリプトの作成および実行

PHPスクリプトの作成および実行について説明します。

PHPの動作環境を表示するPHPスクリプトの作成および実行

1. エディタを用いて、PHPの動作環境を表示するPHPスクリプトを作成してください。PHPの動作環境を表示するPHPスクリプトの例

を以下に示します。

<?php phpinfo() ; ?>

2. Apache動作環境ファイルのAliasディレクティブで指定した絶対パスのディレクトリにPHPスクリプトのファイルを置いてください。PHPスクリプトのファイル名の拡張子は“.php”を指定してください。

3. Apache動作環境ファイルのPortディレクティブでポート番号80を指定した場合、WWWブラウザのURLテキストボックスに下記の

URLを指定し、PHPスクリプトを実行してください。

http://WWWサーバのホスト名/example/~.php

4. Apache動作環境ファイルのPortディレクティブでポート番号80以外を指定した場合、WWWブラウザのURLテキストボックスに下記の

URLを指定し、PHPスクリプトを実行してください。

http://WWWサーバのホスト名:ポート番号/example/~.php

PHPスクリプトの作成および実行

1. PHPスクリプトからアクセスするデータベースを作成してください。データベースの作成方法の詳細は、“RDB管理者ガイド”と“RDBユーザーズガイド データベース定義編”を参照してください。 SPCL="PHP"

2. エディタを用いて、PHPスクリプトを作成してください。PHPスクリプトの簡単な例を以下に示します。

<HTML>

<BODY>

<PRE>

<?php

putenv( "RDBNAME=rdbsys1" ) ;

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id,$x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

- 12 -

Page 21: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

3. 必要に応じて、PHPスクリプトでputenv関数を用いて、環境変数RDBCHARSET、RDBNCHARにPHPスクリプトの文字コードを

指定してください。環境変数RDBCHARSET、RDBNCHARの詳細は、“RDBユーザーズガイド 応用プログラム開発編”の“環境

変数”を参照してください。

4. ローカルのSymfoware/RDBに接続する場合、PHPスクリプトでputenv関数を用いて、環境変数RDBNAMEにRDBシステム名を

指定してください。省略した場合、RDB名なしのRDBシステムに接続します。環境変数RDBNAMEの詳細は、“RDBユーザーズ

ガイド 応用プログラム開発編”の応用プログラムの起動を参照してください。

5. リモートのSymfoware/RDBに接続する場合、Symfoware Serverのリモートアクセスの設定とRDBシステムの再起動を行う必要が

あります。リモートアクセスの設定の詳細は、“スタートガイドサーバ編”の“RDBのセットアップ”と“システム用の動作環境ファイル

による定義”の“MAX_CONNECT_TCP”を参照してください。

6. Apache動作環境ファイルのAliasディレクティブで指定した絶対パスのディレクトリにPHPスクリプトのファイルを置いてください。PHPスクリプトのファイル名の拡張子は“.php”を指定してください。

7. Apache動作環境ファイルのPortディレクティブでポート番号80を指定した場合、WWWブラウザのURLテキストボックスに下記の

URLを指定し、PHPスクリプトを実行してください。

http://WWWサーバのホスト名/example/~.php

8. Apache動作環境ファイルのPortディレクティブでポート番号80以外を指定した場合、WWWブラウザのURLテキストボックスに下記の

URLを指定し、PHPスクリプトを実行してください。

http://WWWサーバのホスト名:ポート番号/example/~.php

3.2 PHP Symfowareの規約

PHP Symfowareの規約について説明します。

3.2.1 PHP Symfowareの仕様

PHP Symfowareの仕様について説明します。

PHP Symfowareの仕様

PHPのデータベースアクセスに関して書籍などの参考資料が出ており、データベースアクセスの仕様を規定しています。PHP Symfowareでは、これらの機能に対応させた機能を用意していますが、仕様が異なる箇所があります。

本マニュアルでは、PHP Symfowareの詳細な仕様を規定しています。書籍などの参考資料のデータベースアクセス仕様と異なる箇所

があります。

3.2.2 変数の規約

変数の規約について説明します。

変数の規約

PHPスクリプトの変数は、変数名の先頭に必ず$記号を付けます。

$value

先頭の$は、単一の値を保持することを表します。

$value[要素番号]

変数名の後ろの“[要素番号]”は、複数の値を要素番号で対応付けて値を保持することを表します。

$value["要素名"]

変数名の後ろの“["要素名"]”は、複数の値を要素名で対応付けて値を保持することを表します。これを連想配列と呼びます。連想配

列のことをハッシュとも呼びます。

- 13 -

Page 22: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

3.2.3 真、偽

真、偽について説明します。

真、TRUE

TRUEとは、0以外の値(一般には1であることが多いです)を表します。

PHPスクリプト中で、変数にTRUEを設定するときは $value = TRUE ; で行い、変数の値がTRUEであることを判定するときは if( $value ) { }で行います。

偽、FALSE

FALSEとは、0、"0"または空文字列を表します。

PHPスクリプト中で、変数にFALSEを設定するときは $value = FALSE ; で行い、変数の値がFALSEであることを判定するときは if( !$value ) { } で行います。

3.2.4 SQL文の規約

SQL文の規約について説明します。

使用できるSQL文

使用できるSQL文を以下に示します。

使用できるSQLの文、要素および機能については、“SQLリファレンスガイド”の“SQLと関数の一覧”を参照してください。

それぞれのSQL文の詳細については、“SQLリファレンスガイド”に記載されている各SQL文の説明記事を参照してください。

・ 動的SELECT文

・ INSERT文

・ UPDATE文:探索

・ UPDATE文:位置付け

・ DELETE文:探索

・ DELETE文:位置付け

・ スキーマ定義文

・ スキーマ操作文

・ 格納構造定義文

・ 格納構造操作文

・ 利用者制御文

・ アクセス制御文

・ システム制御文

・ CALL文(ただし、パラメタモードがINのみ)

・ SET SCHEMA文

・ SET TRANSACTION文

Symfoware関数において、動的SELECT文、INSERT文、UPDATE文:探索、UPDATE文:位置付け、DELETE文:探索およびCALL文に、動的パラメタを指定し、動的パラメタに対応する値を指定することができます。

PEARにおいて、動的SELECT文、INSERT文、UPDATE文:探索、UPDATE文:位置付け、DELETE文:探索およびCALL文に、動的

パラメタを指定することはできませんが、動的パラメタに相当する代替機能が用意されています。

動的パラメタの詳細は、“SQLリファレンスガイド”の“値指定と相手指定”を参照してください。

- 14 -

Page 23: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

表定義、インデックス定義に格納領域指定が省略されている場合、格納領域指定を付加します。格納領域指定を付加をするか否か

を変更する場合、データソース名のパラメタに“CLI_STORAGE_AREA_AUTO_SET”を指定してください。データソース名の詳細

は、“4.2.8 symfoware_connect”の“パラメタ”を参照してください。

格納領域指定の詳細は、“SQLリファレンスガイド”の“CREATE TABLE文(表定義)”、“CREATE INDEX文(インデックス定義)”を参

照してください。

- 15 -

Page 24: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第4章 Symfoware関数の仕様

本章では、Symfoware関数を用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明します。

4.1 Symfoware関数の概要

4.2 Symfoware関数

4.1 Symfoware関数の概要

Symfoware関数の概要について説明します

4.1.1 Symfoware関数のスクリプト例

Symfoware関数のスクリプト例について説明します。

Symfoware関数のスクリプト例

本項の例は、主に以下のPHPスクリプトをベースにしたものを用いています。以下のPHPスクリプトを実行させるためには、ユー

ザ“rdbmng”がデータベース“RDBDB”、データベーススペース“DBSP1”およびスキーマ“STOCKS”を定義しておく必要があります。

<HTML>

<BODY>

<PRE>

// 1.

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

// 2.

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

// 3.

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

// 4.

symfoware_execute( $result_id ) ;

// 5.

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

// 6.

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

1. データベースに接続し、接続ID“connection_id”を取得します。接続IDが取得できないときは、例外を発行します。

2. 接続ID“connection_id”を用いて、SQL文を実行します。復帰値が正常でないときは、例外を発行します。

- 16 -

Page 25: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

3. 接続ID“connection_id”を用いて、SQL文を準備し、結果ID“result_id”を取得します。結果IDが取得できないときは、例外を発

行します。

4. 結果ID“result_id”を用いて、SQL文を実行します。

5. 結果ID“result_id”を用いてフェッチします。

6. 接続ID“connection_id”を用いて、データベースの接続を切断します。復帰値が正常でないときは、例外を発行します。

上記の他に、Symfoware関数は豊富なインタフェースを持っています。

4.2 Symfoware関数

Symfoware関数について説明します。

4.2.1 symfoware_autocommit

説明

symfoware_autocommitは、自動的にコミットとするか否を設定し、復帰値を返却します。

デフォルトは自動的にコミットします。

構文

int symfoware_autocommit( int connection_id [, int OnOff ] ) ;

パラメタ

connection_id :

接続IDを指定してください。

OnOff :

自動的にコミットする場合、TRUEを指定してください。

自動的にコミットしない場合、FALSEを指定してください。

自動的にコミットするか否かを得る場合、省略してください。

戻り値

自動的にコミットする場合、TRUEが返却されます。

自動的にコミットしない場合、FALSEが返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

printf( "AutoCommit : %s¥n", symfoware_autocommit( $connection_id ) ? "true" : "false" ) ;

symfoware_autocommit( $connection_id, FALSE ) ;

printf( "AutoCommit : %s¥n", symfoware_autocommit( $connection_id ) ? "true" : "false" ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_commit( $connection_id ) ;

- 17 -

Page 26: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_rollback( $connection_id ) ;

symfoware_autocommit( $connection_id, TRUE ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.2 symfoware_binmode

説明

symfoware_binmodeは、BLOB型の列から読み込むバイナリデータの処理方法を設定し、復帰値を返却します。

バイナリデータの処理方法の省略値は、バイナリデータそのままとします。

構文

int symfoware_binmode( int result_id, int binary_mode ) ;

パラメタ

result_id :

結果IDを指定してください。

新規の結果のデフォルト値とする場合、0を指定してください。

binary_mode :

バイナリデータをそのまま出力に渡す場合、SYMFOWARE_BINMODE_PASSTHRUを指定してください。

バイナリデータそのままとする場合、SYMFOWARE_BINMODE_RETURNを指定してください。

16進文字表記の文字列とする場合、SYMFOWARE_BINMODE_CONVERTを指定してください。

戻り値

TRUEが返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.SLIP CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.SLIP ( ORDER_NUMBER INTEGER, ORDER_SLIP

BLOB(64K) ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.SLIP VALUES( ?, ? )" ) ;

$params = array( 140, "<?xml version='1.0' ?><SLIP><NUMBER>140</NUMBER><NAME>cassette deck</NAME></

- 18 -

Page 27: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$params = array( 110, "<?xml version='1.0' ?><SLIP><NUMBER>110</NUMBER><NAME>television</NAME></

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.SLIP" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_binmode( $result_id, SYMFOWARE_BINMODE_RETURN ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

XML文書を返却する

<?php

header( "content-type: text/xml" ) ;

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.SLIP CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.SLIP ( ORDER_NUMBER INTEGER, ORDER_SLIP

BLOB(64K) ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.SLIP VALUES( ?, ? )" ) ;

$params = array( 140, "<?xml version='1.0' ?><SLIP><NUMBER>140</NUMBER><NAME>cassette deck</NAME></

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$params = array( 110, "<?xml version='1.0' ?><SLIP><NUMBER>110</NUMBER><NAME>television</NAME></

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT ORDER_SLIP FROM STOCKS.SLIP WHERE

ORDER_NUMBER = 140" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_binmode( $result_id, SYMFOWARE_BINMODE_PASSTHRU ) ;

symfoware_execute( $result_id ) ;

symfoware_fetch_row( $result_id ) ;

symfoware_result( $result_id, 1 ) ;

symfoware_close( $connection_id ) ;

?>

4.2.3 symfoware_close

説明

symfoware_closeは、データベースを切断します。

トランザクションが開始されている場合、データベースの切断に失敗し、データベースに接続されたままとなります。

構文

void symfoware_close( int connection_id ) ;

パラメタ

connection_id :

接続IDを指定してください。

- 19 -

Page 28: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“4.2.8 symfoware_connect”の“例”を参照してください。

4.2.4 symfoware_close_all

説明

symfoware_close_allは、すべてのデータベースを切断します。

トランザクションが開始されている場合、データベースの切断に失敗し、データベースに接続されたままとなります。

構文

void symfoware_close_all( void ) ;

4.2.5 symfoware_columnprivileges

説明

symfoware_columnprivilegesは未サポートです。

symfoware_columnprivilegesを使用したときの動作は不定です。

4.2.6 symfoware_columns

説明

symfoware_columnsは、データベース中に存在するユーザが作成した表、ビュー表または一時表の列に関する情報を取得するための結果

IDを返却します。

構文

int symfoware_columns( int connection_id [, string database_name [, string schema_name [, string table_name [, stringcolumn_name ] ] ] ] ) ;

パラメタ

connection_id :

接続IDを指定してください。

database_name :

データベース名を指定してください。

データベース名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

schema_name :

スキーマ名を指定してください。

スキーマ名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

table_name :

表名、ビュー表名または一時表名を指定してください。

表名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

column_name :

列名を指定してください。

列名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

- 20 -

Page 29: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、列に関する情報を得ることができます。情報の列番号と値を以下に示しま

す。

列番号 値

1 データベース名が設定されます。

2 スキーマ名が設定されます。

3 表名、ビュー表名、一時表名が設定されます。

4 列名が設定されます

5 SQLデータ型番号が設定されます。

6 データ型を表す文字列が設定されます。

7 真数の場合、10進数での桁数が設定されます。

概数の場合、ビット数が設定されます。

文字列型、各国語文字列型の場合、 大文字数が

設定されます。

日時型の場合、 大文字数が設定されます。

時間隔型の場合、 大文字数が設定されます。

BLOB型の場合、 大バイト数が設定されます。

8 データ長が設定されます。

9 位取りが設定されます。

10 真数の場合、10が設定されます。

概数の場合、2が設定されます。

真数、概数以外の場合、NULLが設定されます。

11 NULLを持つ可能性がある場合、TRUEが設定され

ます。

NULLを持つ可能性がない場合、FALSEが設定さ

れます。

12 NULLが設定されます。

13 列にデフォルト値が設定されている場合、デフォルト

値が設定されます。

列にデフォルト値が設定されていない場合、NULLが設定されます。

14 日時型の場合、9が設定されます。

時間隔型の場合、10が設定されます。

日時型、時間隔型以外の場合、SQLデータ型番号

が設定されます。

15 DATE型の場合、1が設定されます。

TIME型の場合、2が設定されます。

TIMESTAMP型の場合、3が設定されます。

日時型、時間隔型以外の場合、NULLが設定されま

す。

16 文字型の場合、文字数が設定されます。

文字列型以外の場合、NULLが設定されます。

- 21 -

Page 30: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

列番号 値

17 列番号が設定されます。

18 NULLを持つ可能性がある場合、"YES"が設定され

ます。

NULLを持つ可能性がない場合、"NO"が設定され

ます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK_T CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE VIEW STOCKS.STOCK_V COMMENT 'VIEW' AS SELECT PRODUCT_NUMBER,

PRODUCT_NAME FROM STOCKS.STOCK WHERE PRODUCT_NAME = 'cassette deck'" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE GLOBAL TEMPORARY TABLE STOCKS.STOCK_T ( PRODUCT_NUMBER

INTEGER NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT

NOT NULL ) ON COMMIT PRESERVE ROWS COMMENT 'VIEW' ON DBSP1 2" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_columns( $connection_id, "RDBDB", "STOCKS", "STOCK%", "PRODUCT_%" ) ;

if( ! $result_id ) {

symfoware_errormsg( $connection_id ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

printf( "TABLE_CAT : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "TABLE_SCHEM : %s¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "TABLE_NAME : %s¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "COLUMN_NAME : %s¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "DATA_TYPE : %d¥n", symfoware_result( $result_id, 5 ) ) ;

printf( "TYPE_NAME : %s¥n", symfoware_result( $result_id, 6 ) ) ;

printf( "COLUNN_SIZE : %d¥n", symfoware_result( $result_id, 7 ) ) ;

printf( "LENGTH : %d¥n", symfoware_result( $result_id, 8 ) ) ;

printf( "SCALE : %d¥n", symfoware_result( $result_id, 9 ) ) ;

printf( "NUM_PREC_RADIX : " . ( symfoware_isnull( $result_id, 10 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 10 ) ? "NULL" : symfoware_result( $result_id, 10 ) ) ;

printf( "NULLABLE : %s¥n", symfoware_result( $result_id, 11 ) ) ;

printf( "REMARKS : %s¥n", symfoware_isnull( $result_id, 12 ) ? "NULL" :

symfoware_result( $result_id, 12 ) ) ;

printf( "COLUMN_DEF : %s¥n", symfoware_isnull( $result_id, 13 ) ? "NULL" :

symfoware_result( $result_id, 13 ) ) ;

printf( "SQL_DATA_TYPE : %d¥n", symfoware_result( $result_id, 14 ) ) ;

printf( "SQL_DATETIME_SUB : " . ( symfoware_isnull( $result_id, 15 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 15 ) ? "NULL" : symfoware_result( $result_id, 15 ) ) ;

printf( "CHAR_OCTET_LENGTH : " . ( symfoware_isnull( $result_id, 16 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 16 ) ? "NULL" : symfoware_result( $result_id, 16 ) ) ;

printf( "ORDINAL_POSITION : %d¥n", symfoware_result( $result_id, 17 ) ) ;

printf( "IS_NULLABLE : %s¥n", symfoware_result( $result_id, 18 ) ) ;

}

symfoware_close( $connection_id ) ;

- 22 -

Page 31: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

?>

</PRE>

</BODY>

</HTML>

4.2.7 symfoware_commit

説明

symfoware_commitは、データベースをコミットし、復帰値を返却します。

構文

int symfoware_commit( int connection_id ) ;

パラメタ

connection_id :

接続IDを指定してください。

戻り値

TRUEが返却されます。

異常の場合、FALSEが返却されます。

“4.2.1 symfoware_autocommit”の“例”を参照してください。

4.2.8 symfoware_connect

説明

symfoware_connectは、データベースに接続し、接続IDを返却します。

構文

int symfoware_connect( string data_source, string user_name, string password [ , int mode ] ) ;

パラメタ

$data_source :

データソース名を指定してください。

Symfoware/RDBにローカルアクセスする場合、"データベース名"または"データベース名;パラメタ"を指定してください。

Symfoware/RDBにリモートアクセスする場合、"データベース名,ホスト名,ポート番号"または"データベース名,ホスト名,ポート番号;パラ

メタ"を指定してください。

パラメタについては、“付録A connect、pconnectのパラメタの記述形式”を参照してください。

user_name :

認可識別子を指定してください。

password :

パスワードを指定してください。

mode :

SQL_CUR_USE_DRIVERを指定してください。

- 23 -

Page 32: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

SQL_CUR_USE_IF_NEEDED、SQL_CUR_USE_ODBC、SQL_CUR_USE_DEFAULTは未サポートです。使用したときの動作は不

定です。

戻り値

接続IDが返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) ;

if( ! $connection_id ) {

die( symfoware_errormsg() ) ;

}

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.9 symfoware_cursor

説明

symfoware_cursorは、カーソル名を返却します。

構文

string symfoware_cursor( int result_id ) ;

パラメタ

result_id :

結果IDを指定してください。

戻り値

カーソル名が返却されます。

- 24 -

Page 33: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result_id = symfoware_prepare( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER

NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT

NULL ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

printf( "cursor : %s¥n", symfoware_cursor( $result_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( ?, ?, ?, ? )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$params = array( 140, "cassette deck", 120, 2 ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg( $connection_id ) ) ;

$params = array( 110, "television", 85, 2 ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg( $connection_id ) ) ;

printf( "cursor : %s¥n", symfoware_cursor( $result_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

printf( "cursor : %s¥n", symfoware_cursor( $result_id ) ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.10 symfoware_do

説明

symfoware_doは、symfoware_execの同義語です。

“4.2.13 symfoware_exec”を参照してください。

4.2.11 symfoware_error

説明

symfoware_errorは、直近のSQLSTATEを返却します。

SQLSTATEはデータベースアクセスの状態を5バイトの文字列で表します。

SQLSTATEの詳細は、“SQLリファレンスガイド”の“SQLSTATE”を参照してください。

構文

string symfoware_error( [ int connection_id ] ) ;

パラメタ

connection_id :

接続IDを指定してください。

- 25 -

Page 34: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

他の接続を含めた直近のSQLSTATEを得る場合、省略してください。

戻り値

SQLSTATEが返却されます。

エラーが発生していない場合、空文字列が返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

// normal

printf( "error : %s¥n", symfoware_error() ) ;

printf( "errormsg : %s¥n", symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

@symfoware_exec( $connection_id, "INSERT -- ILLEGAL" ) ;

// error

printf( "error : %s¥n", symfoware_error( $connection_id ) ) ;

printf( "errormsg : %s¥n", symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

// normal

printf( "error : %s¥n", symfoware_error( $connection_id ) ) ;

printf( "errormsg : %s¥n", symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT 300 / ( PRODUCT_NUMBER - 110 ) FROM

STOCKS.STOCK" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

// zero divide

printf( "error : %s¥n", symfoware_error( $connection_id ) ) ;

printf( "errormsg : %s¥n", symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "DELETE FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

// normal

printf( "error : %s¥n", symfoware_error( $connection_id ) ) ;

printf( "errormsg : %s¥n", symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "DELETE FROM STOCKS.STOCK" ) ;

// no record

- 26 -

Page 35: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "error : %s¥n", symfoware_error( $connection_id ) ) ;

printf( "errormsg : %s¥n", symfoware_errormsg( $connection_id ) ) ;

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.12 symfoware_errormsg

説明

symfoware_errormsgは、直近のSQLMSGを返却します。

SQLMSGは、データベースアクセスのエラーメッセージの文字列です。SQLMSGの詳細は、“まえがき”の“Symfoware/RDBが出力す

るメッセージの処置を参照する”を参照してください。

構文

string symfoware_errormsg( [ int connection_id ] ) ;

パラメタ

connection_id :

接続IDを指定してください。

他の接続を含めた直近のSQLMSGを得る場合、省略してください。

戻り値

SQLMSGが返却されます。

エラーが発生していない場合、空文字列が返却されます。

“4.2.11 symfoware_error”の“例”を参照してください。

4.2.13 symfoware_exec

説明

symfoware_execは、SQL文を準備、実行し、結果IDを返却します。

構文

int symfoware_exec( int connection_id, string statement ) ;

パラメタ

connection_id :

接続IDを指定してください。

statement :

SQL文を指定してください。

戻り値

結果IDが返却されます。

異常の場合、FALSEが返却されます。

- 27 -

Page 36: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“4.2.8 symfoware_connect”の“例”を参照してください。

4.2.14 symfoware_execute

説明

symfoware_executeは、準備されたSQL文を実行し、復帰値を返却します。

構文

int symfoware_execute( int result_id [, array params ] ) ;

パラメタ

result_id :

結果IDを指定してください。

params :

動的パラメタに対応する値の配列を指定してください。

戻り値

TRUEが返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

$result_id = symfoware_prepare( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) or

die( symfoware_errormsg( $connection_id ) ) ;

@symfoware_execute( $result_id ) ;

$result_id = symfoware_prepare( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER

NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT

NULL ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

$rc = symfoware_execute( $result_id ) ;

if( ! $rc ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( ?, ?, ?, ? )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$params = array( 140, "cassette deck", 120, 2 ) ;

$rc = symfoware_execute( $result_id, $params ) ;

if( ! $rc ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$params = array( 110, "television", 85, 2 ) ;

$rc = symfoware_execute( $result_id, $params ) ;

if( ! $rc ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

- 28 -

Page 37: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.15 symfoware_fetch_array

説明

symfoware_fetch_arrayは、フェッチし、連想配列で結果の行を返却します。

構文

array symfoware_fetch_array( int result_id [, int row_number ] ) ;

パラメタ

result_id :

結果IDを指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

戻り値

連想配列が返却されます。

結果の行が0の場合または異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( ; ; ) {

$values = symfoware_fetch_array( $result_id ) ;

if( ! $values ) {

break ;

}

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

- 29 -

Page 38: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY RODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( $y = 2 ; $y >= 1 ; $y -- ) {

$values = symfoware_fetch_array( $result_id, $y ) ;

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.16 symfoware_fetch_into

説明

symfoware_fetch_intoは、フェッチし、配列で結果の行を返却し、復帰値を返却します。

構文

int symfoware_fetch_into( int result_id, array &value [, int row_number ] ) ;

パラメタ

result_id :

結果IDを指定してください。

value :

結果を受け取る配列を指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

戻り値

0以上の列番号が返却されます。

結果の行が0の場合または異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

- 30 -

Page 39: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( ; ; ) {

$rc = symfoware_fetch_into( $result_id, $values ) ;

if( ! $rc ) {

break ;

}

for( $x = 1 ; $x <= $rc ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", $values[ $x - 1 ] ) ;

}

printf( "¥n" ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( $y = 2 ; $y >= 1 ; $y -- ) {

$rc = symfoware_fetch_into( $result_id, $values, $y ) ;

for( $x = 1 ; $x <= $rc ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", $values[ $x - 1 ] ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.17 symfoware_fetch_object

説明

symfoware_fetch_objectは、フェッチし、オブジェクトで結果の行を返却します。

構文

object symfoware_fetch_object( int result_id [, int row_number ] ) ;

パラメタ

result_id :

結果IDを指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

戻り値

オブジェクトが返却されます。

結果の行が0の場合または異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

- 31 -

Page 40: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( ; ; ) {

$obj = symfoware_fetch_object( $result_id ) ;

if( ! $obj ) {

break ;

}

printf( "%d¥n", $obj->PRODUCT_NUMBER ) ;

printf( "%s¥n", $obj->PRODUCT_NAME ) ;

printf( "%d¥n", $obj->STOCK_QUANTITY ) ;

printf( "%d¥n", $obj->WAREHOUSE_NUMBER ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( $y = 2 ; $y >= 1 ; $y -- ) {

$obj = symfoware_fetch_object( $result_id, $y ) ;

printf( "%d¥n", $obj->PRODUCT_NUMBER ) ;

printf( "%s¥n", $obj->PRODUCT_NAME ) ;

printf( "%d¥n", $obj->STOCK_QUANTITY ) ;

printf( "%d¥n", $obj->WAREHOUSE_NUMBER ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.18 symfoware_fetch_row

説明

symfoware_fetch_rowは、フェッチして、復帰値を返却します。

symfoware_fetch_rowの呼び出し後、symfoware_resultで行のデータの取り出しが可能となります。

構文

int symfoware_fetch_row( int result_id [, int row_number ] ) ;

パラメタ

result_id :

結果IDを指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

- 32 -

Page 41: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

戻り値

TRUEが返却されます。

結果の行が0の場合、または異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 999, 'unknown', NULL, 999 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( ; ; ) {

$rc = symfoware_fetch_row( $result_id ) ;

if( ! $rc ) {

break ;

}

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

if( symfoware_isnull( $result_id, $x ) ) {

printf( "NULL" ) ;

}

else {

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

}

printf( "¥n" ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

for( $y = 3 ; $y >= 1 ; $y -- ) {

$rc = symfoware_fetch_row( $result_id, $y ) ;

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

if( symfoware_isnull( $result_id, $x ) ) {

printf( "NULL" ) ;

}

else {

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

- 33 -

Page 42: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

4.2.19 symfoware_field_len

説明

symfoware_field_lenは、選択リストの列の長さを返却します。

構文

int symfoware_field_len( int result_id, int field_number ) ;

パラメタ

result_id :

結果IDを指定してください。

field_number :

1以上の数値で列番号を指定してください。

戻り値

列の長さが返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

printf( "num_fields : %s¥n", symfoware_num_fields( $result_id ) ) ;

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

printf( "field_name : %s¥n", symfoware_field_name( $result_id, $x ) ) ;

printf( "field_type : %s¥n", symfoware_field_type( $result_id, $x ) ) ;

printf( "field_len : %d¥n", symfoware_field_len( $result_id, $x ) ) ;

printf( "field_precision : %d¥n", symfoware_field_precision( $result_id, $x ) ) ;

printf( "field_scale : %d¥n", symfoware_field_scale( $result_id, $x ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.20 symfoware_field_name

説明

symfoware_field_nameは、選択リストの列名を返却します。

- 34 -

Page 43: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

構文

string symfoware_field_name( int result_id, int field_number ) ;

パラメタ

result_id :

結果IDを指定してください。

field_number :

1以上の数値で列番号を指定してください。

戻り値

列名が返却されます。

異常の場合、FALSEが返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.21 symfoware_field_num

説明

symfoware_field_numは、選択リストの列名の番号を返却します。

構文

string symfoware_field_num( int result_id, string field_name ) ;

パラメタ

result_id :

結果IDを指定してください。

field_name :

列名を指定してください。

戻り値

1以上の数値で列番号が返却されます。

異常の場合、FALSEが返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.22 symfoware_field_precision

説明

symfoware_field_precisionは、選択リストの列の精度を返却します。

構文

int symfoware_field_precision( int result_id, int field_number ) ;

- 35 -

Page 44: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

パラメタ

result_id :

結果IDを指定してください。

field_number :

1以上の数値で列番号を指定してください。

戻り値

列の精度が返却されます。

異常の場合、FALSEが返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.23 symfoware_field_scale

説明

symfoware_field_scaleは、選択リストの列の位取りを返却します。

構文

int symfoware_field_scale( int result_id, int field_number ) ;

パラメタ

result_id :

結果IDを指定してください。

field_number :

1以上の数値で列番号を指定してください。

戻り値

列の位取りが返却されます。

異常の場合、FALSEが返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.24 symfoware_field_type

説明

symfoware_field_typeは、選択リストの列のSQLデータ型番号を返却します。

構文

string symfoware_field_type( int result_id, int field_number ) ;

パラメタ

result_id :

結果IDを指定してください。

field_number :

- 36 -

Page 45: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

1以上の数値で列番号を指定してください。

戻り値

列のSQLデータを表わす文字列が返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.25 symfoware_foreignkeys

説明

symfoware_foreignkeysは未サポートです。

symfoware_foreignkeysを使用したときの動作は不定です。

4.2.26 symfoware_free_result

説明

symfoware_free_resultは、準備したSQL文を明示的に開放します。

自動的にコミットしない場合において、symfoware_free_resultを呼び出すと、データベースをロールバックします。

構文

int symfoware_free_result( int result_id ) ;

パラメタ

result_id :

結果IDを指定してください。

戻り値

常にTRUEを返却します。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( ?, ?, ?, ? )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$params = array( 140, "cassette deck", 120, 2 ) ;

$rc = symfoware_execute( $result_id, $params ) ;

if( ! $rc ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$params = array( 110, "television", 85, 2 ) ;

$rc = symfoware_execute( $result_id, $params ) ;

if( ! $rc ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

symfoware_free_result( $result_id ) ;

- 37 -

Page 46: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$params = array( 999, "unknown", 999, 999 ) ;

$rc = @symfoware_execute( $result_id, $params ) ; // warning

if( ! $rc ) {

printf( "no insert¥n" );

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

symfoware_fetch_row( $result_id ) ;

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

symfoware_free_result( $result_id ) ;

$rc = @symfoware_fetch_row( $result_id ) ; // warning

if( ! $rc ) {

printf( "no record¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.27 symfoware_gettypeinfo

説明

symfoware_gettypeinfoは、サポートしているデータ型の情報を取得するための結果IDを返却します。

構文

int symfoware_gettypeinfo( int connection_id [, int data_type ] ) ;

パラメタ

connection_id :

接続IDを指定してください。

data_type :

SQLデータ型番号を指定してください。SQLデータ型番号と意味を以下に示します。

SQLデータ型番号 意味

1 CHAR

2 NUMERIC

3 DECIMAL

4 INTEGER

5 SMALLINT

- 38 -

Page 47: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

SQLデータ型番号 意味

7 REAL、FLOATの精度1から23まで

8 DOUBLE、FLOATの精度24から52まで

12 CHAR VARYING

91 DATE

92 TIME

93 TIMESTAMP

101 INTERVAL YEAR

102 INTERVAL MONTH

103 INTERVAL DAY

104 INTERVAL HOUR

105 INTERVAL MINUTE

106 INTERVAL SECOND

107 INTERVAL YEAR TO MONTH

108 INTERVAL DAY TO HOUR

109 INTERVAL DAY TO MINUTE

110 INTERVAL DAY TO SECOND

111 INTERVAL HOUR TO MINUTE

112 INTERVAL HOUR TO SECOND

113 INTERVAL MINUTE TO SECOND

-3 32KバイトまでのBLOB

-4 32Kバイトを超えて2GバイトまでのBLOB

-91 NCHAR

-93 NCHAR VARYING

すべてのデータ型の情報を得る場合、省略してください。

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、データ型の情報を得ることができます。情報の列番号と値を以下に示しま

す。

列番号 値

1 データ型を表す文字列が設定されます。

2 SQLデータ型番号が設定されます。

3 真数の場合、10進数での桁数が設定されます。

概数の場合、ビット数が設定されます

文字列型、各国語文字列型の場合、 大文字数が

設定されます。

日時型の場合、 大文字数が設定されます。

時間隔型の場合、 大文字数が設定されます。

BLOB型の場合、 大バイト数が設定されます。

4 定数値の先頭に付ける文字列が設定されます。

- 39 -

Page 48: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

列番号 値

定数値の先頭に付ける文字列がない場合、空文字

列が設定されます。

5 定数値の後方に付ける文字列が設定されます。

定数値の後方に付ける文字列がない場合、空文字

列が設定されます。

6 データ型に精度、位取りが指定できる場

合、"PRECISION,SCALE"が設定されます。

データ型に長さが指定できる場合、"LENGTH"が設

定されます。

データ型に精度、位取り、長さが指定できない場合、

空文字列が設定されます。

7 常にNULLの値を持つ可能性があるため、1が設定

されます。

8 文字列型の場合、比較において大文字と小文字を

区別するため、TRUEが設定されます。

文字列型以外の場合、FALSEが設定されます。

9 文字列型の場合、比較において大文字と小文字を

区別するため、TRUEが設定されます。

文字列型以外の場合、FALSEが設定されます。

10 探索条件に指定できない場合、0が設定されます。

LIKE述語を除く探索条件に指定できる場合、2が設

定されます。

探索条件に指定できる場合、3が設定されます。

11 真数、概数の場合、常に符号ありのため、TRUEが設定されます。

真数、概数でない場合、NULLが設定されます。

12 真数、概数の場合、新しい行を挿入するとき自動的

にユニークな値とはならないため、FALSEが設定さ

れます。

真数、概数以外の場合、NULLが設定されます。

13 Symfoware/RDBで規定されたデータ型を表す文字

列が設定されます。

14 位取りの 小値が設定されます。

15 位取りの 大値が設定されます。

16 日時型の場合、9が設定されます。

時間隔型の場合、10が設定されます。

日時型、時間隔型以外の場合、SQLデータ型番号

が設定されます。

17 DATE型の場合、1が設定されます。

TIME型の場合、2が設定されます。

TIMESTAMP型の場合、3が設定されます。

日時型、時間隔型以外の場合、NULLが設定されま

す。

18 真数の場合、10が設定されます。

- 40 -

Page 49: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

列番号 値

概数の場合、2が設定されます。

真数、概数以外の場合、NULLが設定されます。

19 時間隔型の場合、時間隔先行フィールド精度の

大文字数が設定されます。

時間隔型以外の場合、NULLが設定されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

$result_id = symfoware_gettypeinfo( $connection_id ) ;

if( ! $result_id ) {

symfoware_errormsg( $connection_id ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

printf( "TYPE_NAME : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "DATA_TYPE : %d¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "COLUMN_SIZE : %d¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "LITERAL_PREFIX : %s¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "LITERAL_SUFFIX : %s¥n", symfoware_result( $result_id, 5 ) ) ;

printf( "CREATE_PARAMS : %s¥n", symfoware_result( $result_id, 6 ) ) ;

printf( "NULLABLE : %d¥n", symfoware_result( $result_id, 7 ) ) ;

printf( "CASE_SENSITIVE : %s¥n", symfoware_result( $result_id, 8 ) ? "TRUE" : "FALSE" ) ;

printf( "SEARCHABLE : %s¥n", symfoware_result( $result_id, 9 ) ) ;

printf( "UNSIGNED_ATTRIBUTE : %s¥n", symfoware_isnull( $result_id, 10 ) ? "NULL" :

symfoware_result( $result_id, 10 ) ? "TRUE" : "FALSE" ) ;

printf( "FIXED_PREC_SCALE : %s¥n", symfoware_isnull( $result_id, 11 ) ? "NULL" :

symfoware_result( $result_id, 11 ) ? "TRUE" : "FALSE" ) ;

printf( "AUTO_UNIQUE_VALUE : %s¥n", symfoware_isnull( $result_id, 12 ) ? "NULL" :

symfoware_result( $result_id, 12 ) ? "TRUE" : "FALSE" ) ;

printf( "LOCAL_TYPE_NAME : %s¥n", symfoware_result( $result_id, 13 ) ) ;

printf( "MINIMUM_SCALE : %d¥n", symfoware_result( $result_id, 14 ) ) ;

printf( "MAXIMUM_SCALE : %d¥n", symfoware_result( $result_id, 15 ) ) ;

printf( "SQL_DATA_TYPE : %d¥n", symfoware_result( $result_id, 16 ) ) ;

printf( "SQL_DATETIME_SUB : " . ( symfoware_isnull( $result_id, 17 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 17 ) ? "NULL" : symfoware_result( $result_id, 17 ) ) ;

printf( "NUM_PREC_RADIX : " . ( symfoware_isnull( $result_id, 18 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 18 ) ? "NULL" : symfoware_result( $result_id, 18 ) ) ;

printf( "INTERVAL_PRECISION : " . ( symfoware_isnull( $result_id, 19 ) ? "%s¥n" : "%d¥n" ),

symfoware_isnull( $result_id, 19 ) ? "NULL" : symfoware_result( $result_id, 19 ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.28 symfoware_isnull

- 41 -

Page 50: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

説明

symfoware_isnullは、フェッチで位置づけられた行の値がナルか否かを判定し、復帰値を返却します。

構文

bool symfoware_isnull( int result_id, mixed field_name_or_number );

パラメタ

result_id :

結果IDを指定してください。

field_name_or_number:

列名を指定してください。または、1以上の数値で列番号を指定してください。

戻り値

値がナル値の場合、TRUEを返却します。

値がナル値でない場合、FALSEを返却します。

“4.2.18 symfoware_fetch_row“の“例”を参照してください。

4.2.29 symfoware_longreadlen

説明

symfoware_longreadlenは、フェッチするデータの長さ(バイト数)を設定します。

フェッチするデータの長さの省略値は4096です。

フェッチするデータの長さより列のデータが長いときは、列のデータをデータの長さで切り捨てます。

フェッチする長さを0にした場合、32Kバイトを超えて2GバイトまでのBLOB型からの読み込みで、バイナリデータをそのまま出力に渡し

ます。

構文

int symfoware_longreadlen( int result_id, int max_len ) ;

パラメタ

result_id :

結果IDを指定してください。

新規の結果のデフォルト値とする場合、0を指定してください。

max_len :

フェッチするデータ長を指定してください。

フェッチするデータ長を無限とする場合、0を指定してください。

戻り値

TRUEを返却します。

異常の場合、FALSEを返却します。

<HTML>

<BODY>

- 42 -

Page 51: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.SLIP CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.SLIP ( ORDER_NUMBER INTEGER, ORDER_SLIP

BLOB(1K) ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "INSERT INTO STOCKS.SLIP VALUES( ?, ? )" ) ;

$params = array( 140, "<?xml version='1.0' ?><SLIP><NUMBER>140</NUMBER><NAME>cassette deck</NAME></

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$params = array( 110, "<?xml version='1.0' ?><SLIP><NUMBER>110</NUMBER><NAME>television</NAME></

SLIP>" ) ;

symfoware_execute( $result_id, $params ) or die( symfoware_errormsg() ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.SLIP" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.SLIP" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_longreadlen( $result_id, 10 ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.30 symfoware_next_result

説明

symfoware_next_resultは、未サポートです。

symfoware_next_resultを使用したときの動作は不定です。

4.2.31 symfoware_num_fields

説明

symfoware_num_fieldsは、結果の列数を返却します。

構文

int symfoware_num_fields( int result_id ) ;

パラメタ

result_id :

結果IDを指定してください。

- 43 -

Page 52: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

戻り値

列数が返却されます。

異常の場合、-1が返却されます。

“4.2.19 symfoware_field_len”の“例”を参照してください。

4.2.32 symfoware_num_rows

説明

symfoware_num_rowsは、データベースアクセスで影響を受けた行数を返却します。

構文

int symfoware_num_rows( int result_id ) ;

パラメタ

result_id :

結果IDを指定してください。

戻り値

SQL文が動的SELECT文の場合、-1が返却されます。

SQL文がINSERT文、UPDATE文:探索、UPDATE文:位置付けまたはDELETE文:探索、DELETE文:位置付けの場合、更新件数が

返却されます。

SQL文が動的SELECT文、INSERT文、UPDATE文:探索およびDELETE文:探索以外の場合、0が返却されます。

異常の場合、-1が返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) ;

if( ! $connection_id ) {

die( symfoware_errormsg() ) ;

}

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result_id = symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT

NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) ;

printf( "num_rows : %d¥n", symfoware_num_rows( $result_id ) ) ;

$result_id = symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck',

120, 2 )" ) ;

printf( "num_rows : %d¥n", symfoware_num_rows( $result_id ) ) ;

$result_id = symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85,

2 )" ) ;

printf( "num_rows : %d¥n", symfoware_num_rows( $result_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

printf( "num_rows : %d¥n", symfoware_num_rows( $result_id ) ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

- 44 -

Page 53: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.33 symfoware_pconnect

説明

symfoware_pconnectは、データベースに接続し、接続IDを返却します。

symfoware_close、symfoware_close_allでデータベースの切断を行わなかった場合、PHPスクリプトが終了してもsymfoware_pconnectのデータベースの接続は切断されません。同じパラメタでsymfoware_pconnectを呼び出した場合、データベース接続を再利用します。

これを持続的な接続と呼びます。

持続的な接続は、Apacheのサーバプロセスごとに行われます。Apacheのサーバプロセス数は、Apache動作環境ファイルの

StartServers、MinSpareServersおよびMaxSpareServersディレクティブで指定します。

コマンドライン版PHPインタプリタでは、持続的な接続は使用できません。

構文

int symfoware_pconnect( string data_source, string user_name, string password ) ;

パラメタ

data_source :

データソース名を指定してください。

Symfoware/RDBにローカルアクセスする場合、"データベース名"または"データベース名;パラメタ"を指定してください。

Symfoware/RDBにリモートアクセスする場合、"データベース名,ホスト名,ポート番号"または"データベース名,ホスト名,ポート番号;パラ

メタ"を指定してください。

パラメタについては、“付録A connect、pconnectのパラメタの記述形式”を参照してください。

user_name :

認可識別子を指定してください。

password :

パスワードを指定してください。

戻り値

接続IDが返却されます。

異常の場合、FALSEが返却されます。

持続的な接続を開始する

<?php

header( "Cache-Control: no-cache" ) ;

header( "Expires: Wed, 01 Jan 2002 00:00:00 GMT" ) ;

header( "Pragma: no-cache" ) ;

?>

<HTML>

- 45 -

Page 54: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<BODY>

<PRE>

<?php

$connection_id = symfoware_pconnect( "RDBDB", "rdbmng", "******" ) or

die( symfoware_errormsg() ) ;

printf( "not closed¥n" ) ;

?>

</PRE>

</BODY>

</HTML>

持続的な接続を終了する

<?php

header( "Cache-Control: no-cache" ) ;

header( "Expires: Wed, 01 Jan 2002 00:00:00 GMT" ) ;

header( "Pragma: no-cache" ) ;

?>

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_pconnect( "RDBDB", "rdbmng", "******" ) or

die( symfoware_errormsg() ) ;

symfoware_close( $connection_id ) ;

printf( "closed¥n" ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.34 symfoware_prepare

説明

symfoware_prepareは、SQL文を準備し、結果IDを返却します。

構文

int symfoware_prepare( int connection_id, int statement ) ;

パラメタ

connection_id :

接続IDを指定してください。

statement :

SQL文を指定してください。

戻り値

結果IDが返却されます。

異常の場合、FALSEが返却されます。

“4.2.14 symfoware_execute”の“例”を参照してください。

4.2.35 symfoware_primarykeys

- 46 -

Page 55: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

説明

symfoware_primarykeysは、データベース中に存在するユーザが作成した表、一時表の一意性制約定義に関する情報を取得するた

めの結果IDを返却します。

構文

int symfoware_primarykeys( int connection_id [, string database_name [, string schema_name [, string table_name ]]] ) ;

パラメタ

connection_id :

接続IDを指定してください。

database_name :

データベース名を指定してください。

schema_name :

スキーマ名を指定してください。

table_name :

表名または一時表名を指定してください。

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、一意性制約定義に関する情報を得ることができます。情報の列番号と値を

以下に示します。

列番号 値

1 データベース名が設定されます。

2 スキーマ名が設定されます。

3 表名、一時表名が設定されます。

4 列名が設定されます。

5 列番号が設定されます。

6 空文字列が設定されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL, PRIMARY

KEY(PRODUCT_NUMBER) ) ON DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE INDEX STOCKS.STOCK.NUM_IX KEY(PRODUCT_NUMBER) ON DBSP1" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_primarykeys( $connection_id, "RDBDB", "STOCKS", "STOCK" ) ;

if( ! $result_id ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

- 47 -

Page 56: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "TABLE_CAT : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "TABLE_SCHEM : %s¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "TABLE_NAME : %s¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "COLUMN_NAME : %s¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "KEY_SEQ : %d¥n", symfoware_result( $result_id, 5 ) ) ;

printf( "PK_NAME : %s¥n", symfoware_result( $result_id, 6 ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.36 symfoware_procedurecolumns

説明

symfoware_procedurecolumnsは、データベース中に存在するユーザが作成したプロシジャルーチンおよびファンクションルーチンの

パラメタに関する情報を取得するための結果IDを返却します。

構文

int symfoware_procedurecolumns( int connection_id [, string database_name [, string schema_name [, string routine_name [, stringparam_name ]]]] ) ;

パラメタ

connection_id :

接続IDを指定してください。

database_name :

データベース名を指定してください。

schema_name :

スキーマ名を指定してください。

スキーマ名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

routine_name :

プロシジャルーチン名またはファンクションルーチン名を指定してください。

ルーチン名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

param_name :

パラメタ名を指定してください。

パラメタ名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、パラメタに関する情報を得ることができます。情報の列番号と値を以下に示

します。

列番号 値

1 データベース名が設定されます。

2 スキーマ名が設定されます。

3 ルーチン名が設定されます。

4 プロシジャルーチンの場合、パラメタ名が設定されま

す。

- 48 -

Page 57: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

列番号 値

ファンクションルーチンの場合、空文字列が設定さ

れます。

5 パラメタモードがINの場合、1が設定されます。

パラメタモードがOUTの場合、4が設定されます。

パラメタモードがINOUTの場合、2が設定されます。

6 SQLデータ型番号が設定されます。

7 データ型を表す文字列が設定されます。

8 真数の場合、10進数での桁数が設定されます。

概数の場合、ビット数が設定されます。

文字列型、各国語文字列型の場合、 大文字数が

設定されます。

日時型の場合、 大文字数が設定されます。

時間隔型の場合、 大文字数が設定されます。

BLOB型の場合、 大バイト数が設定されます。

9 データ長が設定されます。

10 位取りが設定されます。

11 真数の場合、10が設定されます。

概数の場合、2が設定されます。

真数、概数以外の場合、NULLが設定されます。

12 NULLを持つ可能性がある場合、TRUEが設定され

ます。

NULLを持つ可能性がない場合、FALSEが設定さ

れます。

13 空文字列が指定されます。

14 空文字列が指定されます。

15 日時型の場合、9が設定されます。

時間隔型の場合、10が設定されます。

日時型、時間隔型以外の場合、SQLデータ型番号

が設定されます。

16 DATE型の場合、1が設定されます。

TIME型の場合、2が設定されます。

TIMESTAMP型の場合、3が設定されます。

日時型、時間隔型以外の場合、NULLが設定されま

す。

17 文字型の場合、文字数が設定されます。

文字列型以外の場合、NULLが設定されます。

18 パラメタ番号が設定されます。

19 NULLを持つ可能性がある場合、"YES"が設定され

ます。

NULLを持つ可能性がない場合、"NO"が設定され

ます。

- 49 -

Page 58: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

@symfoware_exec( $connection_id, "DROP PROCEDURE STOCKS.STOCK_P CASCADE" ) ;

@symfoware_exec( $connection_id, "DROP FUNCTION STOCKS.STOCK_F CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE PROCEDURE STOCKS.STOCK_P ( IN PRODUCT_NUMBER INTEGER, IN

PRODUCT_NAME CHAR(20), INOUT STOCK_QUANTITY INTEGER, INOUT WAREHOUSE_NUMBER SMALLINT ) COMMENT

'PROCEDURE' BEGIN INSERT INTO STOCKS.STOCK VALUES( PRODUCT_NUMBER, PRODUCT_NAME, STOCK_QUANTITY,

WAREHOUSE_NUMBER ) ; COMMIT WORK ; SET STOCK_QUANTITY = STOCK_QUANTITY + 1 ; SET WAREHOUSE_NUMBER =

WAREHOUSE_NUMBER + 1 ; END" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE FUNCTION STOCKS.STOCK_F ( IN INTEGER, IN CHAR(20), IN

INTEGER, IN SMALLINT ) RETURNS INTEGER COMMENT 'FUNCTION' LANGUAGE C NAME 'stock_f' LIBRARY '/usr/

local/lib'" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_procedurecolumns( $connection_id, "RDBDB", "STOCKS", "STOCK%", "%" ) ;

if( ! $result_id ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

printf( "TABLE_CAT : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "TABLE_SCHEM : %s¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "TABLE_NAME : %s¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "COLUMN_NAME : %s¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "COLUMN_TYPE : %d¥n", symfoware_result( $result_id, 5 ) ) ;

printf( "DATA_TYPE : %s¥n", symfoware_result( $result_id, 6 ) ) ;

printf( "TYPE_NAME : %s¥n", symfoware_result( $result_id, 7 ) ) ;

printf( "COLUMN_SIZE : %d¥n", symfoware_result( $result_id, 8 ) ) ;

printf( "BUFFER_LENGTH : %d¥n", symfoware_result( $result_id, 9 ) ) ;

printf( "DECIMAL_DIGITS : %d¥n", symfoware_result( $result_id, 10 ) ) ;

printf( "NUM_PREC_RADIX : %d¥n", symfoware_result( $result_id, 11 ) ) ;

printf( "NULLABLE : %s¥n", symfoware_result( $result_id, 12 ) ? "TRUE" : "FALSE" ) ;

printf( "REMARKS : %s¥n", symfoware_isnull( $result_id, 13 ) ? "NULL" :

symfoware_result( $result_id, 13 ) ) ;

printf( "COLUMN_DEF : %s¥n", symfoware_isnull( $result_id, 14 ) ? "NULL" :

symfoware_result( $result_id, 14 ) ) ;

printf( "SQL_DATA_TYPE : %d¥n", symfoware_result( $result_id, 15 ) ) ;

printf( "SQL_DATETIME_SUB : " . ( symfoware_isnull( $result_id, 16 ) ? "%s¥n" : "%d¥n" ) ,

symfoware_isnull( $result_id, 16 ) ? "NULL" : symfoware_result( $result_id, 16 ) ) ;

printf( "CHAR_OCTET_LENGTH : " . ( symfoware_isnull( $result_id, 17 ) ? "%s¥n" : "%d¥n" ) ,

symfoware_isnull( $result_id, 16 ) ? "NULL" : symfoware_result( $result_id, 16 ) ) ;

printf( "ORDINAL_POSITION : %d¥n", symfoware_result( $result_id, 18 ) ) ;

printf( "IS_NULLABLE : %s¥n", symfoware_result( $result_id, 19 ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

- 50 -

Page 59: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

4.2.37 symfoware_procedures

説明

symfoware_proceduresは、データベース中に存在するユーザが作成したプロシジャルーチンおよびファンクションルーチンに関する情

報を取得するための結果IDを返却します。

構文

int symfoware_procedures( int connection_id [, string database_name [, string schema_name [, string routine_name ]]] ) ;

パラメタ

connection_id :

接続IDを指定してください。

database_name :

データベース名を指定してください。

schema_name :

スキーマ名を指定してください。

スキーマ名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

routine_name :

プロシジャルーチン名またはファンクションルーチン名を指定してください。

ルーチン名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、プロシジャルーチン、ファンクションルーチンに関する情報を得ることができ

ます。情報の列番号と値を以下に示します。

列番号 値

1 データベース名が設定されます。

2 スキーマ名が設定されます。

3 プロシジャルーチン名、ファンクションルーチン名が

設定されます。

4 0が設定されます。

5 0が設定されます。

6 0が設定されます。

7 空文字列が設定されます。

8 プロシジャルーチンの場合、1が設定されます。

ファンクションルーチンの場合、2が設定されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

@symfoware_exec( $connection_id, "DROP PROCEDURE STOCKS.STOCK_P CASCADE" ) ;

- 51 -

Page 60: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

@symfoware_exec( $connection_id, "DROP FUNCTION STOCKS.STOCK_F CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE PROCEDURE STOCKS.STOCK_P ( IN PRODUCT_NUMBER INTEGER, IN

PRODUCT_NAME CHAR(20), INOUT STOCK_QUANTITY INTEGER, INOUT WAREHOUSE_NUMBER SMALLINT ) COMMENT

'PROCEDURE' BEGIN INSERT INTO STOCKS.STOCK VALUES( PRODUCT_NUMBER, PRODUCT_NAME, STOCK_QUANTITY,

WAREHOUSE_NUMBER ) ; COMMIT WORK ; SET STOCK_QUANTITY = STOCK_QUANTITY + 1 ; SET WAREHOUSE_NUMBER =

WAREHOUSE_NUMBER + 1 ; END" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE FUNCTION STOCKS.STOCK_F ( IN INTEGER, IN CHAR(20), IN

INTEGER, IN SMALLINT ) RETURNS INTEGER COMMENT 'FUNCTION' LANGUAGE C NAME 'stock_f' LIBRARY '/usr/

local/lib'" ) or die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_procedures( $connection_id, "RDBDB", "STOCKS", "STOCK%" ) ;

if( ! $result_id ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

printf( "PROCEDURE_CAT : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "PROCEDURE_SCHEM : %s¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "PROCEDURE_NAME : %s¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "NUM_INOUT_PARAMS : %d¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "NUM_OUTPUT_PARAMS : %d¥n", symfoware_result( $result_id, 5 ) ) ;

printf( "NUM_RESULT_SETS : %d¥n", symfoware_result( $result_id, 6 ) ) ;

printf( "REMARKS : %s¥n", symfoware_isnull( $result_id, 7 ) ? "NULL" :

symfoware_result( $result_id, 7 ) ) ;

printf( "PROCEDURE_TYPE : %d¥n", symfoware_result( $result_id, 8 ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.38 symfoware_result

説明

symfoware_resultは、フェッチで位置付けられた行の値を返却します。

構文

string symfoware_result( int result_id, mixed field_name_or_number ) ;

パラメタ

result_id :

結果IDを指定してください。

field_name_or_number :

列名を指定してください。または、1以上の数値で列番号を指定してください。

戻り値

文字列が返却されます。

異常の場合、空文字列が返却されます。

- 52 -

Page 61: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“4.2.18 symfoware_fetch_row”の“例”を参照してください。

4.2.39 symfoware_result_all

説明

symfoware_result_allは、HTMLテーブルとして結果を出力し、復帰値を返却します。

構文

int symfoware_result_all( int result_id [, string format ] ) ;

パラメタ

result_id :

結果IDを指定してください。

format :

<TABLE>タグに指定する文字列を指定してください。

戻り値

行数が返却されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NAME" )

or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

$rc = symfoware_result_all( $result_id, "bgcolor='#9999cc' border=3 width=30%" ) ;

printf( "rc : %d¥n", $rc ) ;

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

4.2.40 symfoware_rollback

説明

symfoware_rollbackは、データベースをロールバックし、復帰値を返却します。

- 53 -

Page 62: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

構文

int symfoware_rollback( int connection_id ) ;

パラメタ

connection_id :

接続IDを指定してください。

戻り値

TRUEが返却されます。

異常の場合、FALSEが返却されます。

“4.2.1 symfoware_autocommit”の“例”を参照してください。

4.2.41 symfoware_setoption

説明

symfoware_setoptionは未サポートです。

symfoware_setoptionを使用したときの動作は不定です。

4.2.42 symfoware_specialcolumns

説明

symfoware_specialcolumnsは未サポートです。

symfoware_specialcolumnsを使用したときの動作は不定です。

4.2.43 symfoware_statistics

説明

symfoware_statisticsは未サポートです。

symfoware_statisticsを使用したときの動作は不定です。

4.2.44 symfoware_tableprivileges

説明

symfoware_tableprivilegesは未サポートです。

symfoware_tableprivilegesを使用したときの動作は不定です。

4.2.45 symfoware_tables

説明

symfoware_tablesは、データベース中に存在するユーザが作成した表、ビュー表および一時表に関する情報を取得するための結果IDを返却します。

構文

int symfoware_tables( int connection_id [, string database_name [, string schema_name [, string table_name [, string type ]]]] ) ;

- 54 -

Page 63: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

パラメタ

connection_id :

接続IDを指定してください。

database_name :

データベース名を指定してください。

データベース名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

schema_name :

スキーマ名を指定してください。

スキーマ名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

table_name :

表名、ビュー表名または一時表名のいずれかを指定してください。

表名に検索パターン文字を指定することができます。0個以上の文字に合致させる場合は"%"を指定してください。

type :

表名の形式の文字列を指定してください。文字列と意味を以下に示します。

値 意味

"TABLE" 実表

"VIEW" ビュー表

"GROBAL TEMPORARY" 一時表

複数の形式を指定するときは、形式ごとに引用符でくくってコンマ区切りで連結した文字列を指定してください。

戻り値

結果IDが返却されます。結果IDをフェッチすることにより、表、ビュー表および一時表に関する情報を得ることができます。情報の列番

号と値を以下に示します。

列番号 値

1 データベース名が設定されます。

2 スキーマ名が設定されます。

3 表名、ビュー表名、一時表名が設定されます。

4 表の場合、"TABLE"が設定されます。

ビュー表の場合、"VIEW"が設定されます。

一時表の場合、"GROBAL TEMPORARY"が設定

されます。

5 NULLが設定されます。

異常の場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK CASCADE" ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.STOCK_T CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL,

- 55 -

Page 64: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON

DBSP1" ) or die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE VIEW STOCKS.STOCK_V COMMENT 'VIEW' AS SELECT PRODUCT_NUMBER,

PRODUCT_NAME FROM STOCKS.STOCK WHERE PRODUCT_NAME = 'cassette deck'" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "CREATE GLOBAL TEMPORARY TABLE STOCKS.STOCK_T ( PRODUCT_NUMBER

INTEGER NOT NULL, PRODUCT_NAME CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT

NOT NULL ) ON COMMIT PRESERVE ROWS COMMENT 'VIEW' ON DBSP1 2" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_tables( $connection_id, "RDBDB", "STOCKS", "STOCK%", "'TABLE','VIEW'" ) ;

if( ! $result_id ) {

die( symfoware_errormsg( $connection_id ) ) ;

}

$c = 0 ;

while( symfoware_fetch_row( $result_id ) ) {

$c ++ ;

printf( "(%d)¥n", $c ) ;

printf( "TABLE_CAT : %s¥n", symfoware_result( $result_id, 1 ) ) ;

printf( "TABLE_SCHEM : %s¥n", symfoware_result( $result_id, 2 ) ) ;

printf( "TABLE_NAME : %s¥n", symfoware_result( $result_id, 3 ) ) ;

printf( "TABLE_TYPE : %s¥n", symfoware_result( $result_id, 4 ) ) ;

printf( "REMARKS : %s¥n", symfoware_isnull( $result_id, 5 ) ? "NULL" :

symfoware_result( $result_id, 5 ) ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

- 56 -

Page 65: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第5章 PEAR for Symfowareの仕様

本章では、PEAR for Symfowareを用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明します。

5.1 PEAR for Symfowareの概要

5.2 DBクラスのインクルード

5.3 DBクラス

5.4 DB_Resultクラス

5.5 DB_Errorクラス

5.6 DB_Warningクラス

5.7 Cacheクラス

5.1 PEAR for Symfowareの概要

PEAR for Symfowareの概要について説明します。

5.1.1 PEARの特徴

PEARの特徴について説明します。

PEARの特徴

PEARは、PHP 4で開発されたクラスライブラリで、PHP 4に同梱されています。

PEARは、データベースアクセスやキャッシュなどの機能がクラス化されています。

PEARは、PHPスクリプトで記述されているため、PEARのクラスの処理を参照したり、処理を修正することが可能です。

今後は、PEARが有用なクラスライブラリ群に発展すると考えられます。しかし、PEARは発展段階であり、将来的に一部の機能のイン

タフェースが変更となる可能性が考えられます。

5.1.2 PEAR for Symfowareのスクリプト例

PEAR for Symfowareのスクリプト例について説明します。

PEAR for Symfowareのスクリプト例

本章の例は、主に以下のPHPスクリプトをベースにしたものを用いています。以下のPHPスクリプトを実行させるためには、ユー

ザ“rdbmng”がデータベース“RDBDB”、データベーススペース“DBSP1”、スキーマ“STOCKS”を定義しておく必要があります。

<HTML>

<BODY>

<PRE>

<?php

// 1.

require_once( "DB.php" ) ;

// 2.

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

// 3.

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

- 57 -

Page 66: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

// 4.

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

// 5.

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

// 6.

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

1. DBクラスを取り込みます。

2. データベースに接続し、DBオブジェクト“db”を獲得します。DBオブジェクトが取得できないときは、例外を発行します。

3. DBオブジェクト“db”を用いて、SQL文を実行します。復帰値が正常でないときは、例外を発行します。

4. DBオブジェクト“db”を用いて、SQL文を準備および実行し、DB_Resultオブジェクト“result”を取得します。結果オブジェクトが取

得できないときは、例外を発行します。

5. DB_Resultオブジェクト“result”を用いてフェッチします。

6. DBオブジェクト“db”を用いて、データベースの接続を切断します。復帰値が正常でないときは、例外を発行します。

上記のほかに、性能を考慮した記述方法、複数の記述を簡略するための記述方法など、PEARは豊富なインタフェースを持っていま

す。

5.2 DBクラスのインクルード

DBクラスのインクルードについて説明します。

5.2.1 require_once( "DB.php" )

説明

require_once( "DB.php" )は、DBクラスをPHPスクリプトに取り込みます。

構文

require_once( "DB.php" ) ;

5.3 DBクラス

DBクラスについて説明します。

5.3.1 connect

- 58 -

Page 67: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

説明

connectは、データベースに接続し、DBオブジェクトを返却します。

構文

mixed connect( string data_source [, boolean option ] ) ;

パラメタ

data_source :

データソース名を指定してください。

データソース名を文字列で指定する場合

Symfoware/RDBにローカルアクセスする場合、"symfoware://認可識別子:パスワード@データベース名"または"symfoware://認可

識別子:パスワード@データベース名;パラメタ"を指定してください。

Symfoware/RDBにリモートアクセスする場合、"symfoware://認可識別子:パスワード@データベース名,ホスト名,ポート番号"また

は"symfoware://認可識別子:パスワード@データベース名,ホスト名,ポート番号;パラメタ"を指定してください。

認可識別子、パスワードまたはデータベース名のいずれかを省略する場合、認可識別子、パスワードおよびデータベース名を区

切る記号のセミコロン(:)およびアットマーク(@)は省略しないでください。

パラメタについては、“付録A connect、pconnectのパラメタの記述形式”を参照してください。

データソース名を連想配列で指定する場合

Symfoware/RDBにローカルアクセスする場合、下記の連想配列を指定してください。

$data_source = array(

'phptype' => "symfoware",

'username' => "認可識別子",

'password' => "パスワード",

'hostspec' => "データベース名"

) ;

または、

$data_source = array(

'phptype' => "symfoware",

'username' => "認可識別子",

'password' => "パスワード",

'hostspec' => "データベース名,ホスト名,ポート番号;"

) ;

Symfoware/RDBにリモートアクセスする場合、下記の連想配列を指定してください。

$data_source = array(

'phptype' => "symfoware",

'username' => "認可識別子",

'password' => "パスワード",

'hostspec' => "データベース名,ホスト名,ポート番号"

) ;

または、

$data_source = array(

'phptype' => "symfoware",

'username' => "認可識別子",

'password' => "パスワード",

'hostspec' => "データベース名,ホスト名,ポート番号;パラメタ"

) ;

パラメタについては、“付録A connect、pconnectのパラメタの記述形式”を参照してください。

- 59 -

Page 68: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

option :

持続的な接続とする場合、TRUEを指定してください。

持続的な接続としない場合、FALSEを指定してください、または省略してください。

戻り値

DBオブジェクトが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) {

die( $db->toString() ) ;

}

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.2 disconnect

説明

disconnectは、データベースを切断し、復帰値を返却します。

構文

boolean disconnect( void ) ;

戻り値

TRUEが返却されます。

異常の場合、FALSEが返却されます。

- 60 -

Page 69: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“5.3.1 connect”の“例”を参照してください。

5.3.3 isWarning

説明

isWarningは未サポートです。

isWarningを使用したときの動作は不定です。

現状、DBクラスのメソッドでSymfoware/RDBのエラーが発生したときは、エラーコードかDB_Errorオブジェクトのみを返却し、DB_Warningオブジェクトを返却することはありません。

将来的に、DBクラスのメソッドでSymfoware/RDBのエラーが発生したときに、DB_Warningオブジェクトを返却することがあると考えられ

ます。

5.3.4 isError

説明

isErrorは、DBクラスのメソッドが返却したDB_Errorオブジェクトがエラー状態か否かを返却します。

構文

boolean isError( DB_Error db_error ) ;

パラメタ

db_error :

DB_Errorオブジェクトを指定してください。

戻り値

DB_Errorオブジェクトがエラー状態の場合、TRUEが返却されます。

DB_Errorオブジェクトがエラー状態でない場合、または、DB_Errorオブジェクトでない場合、FALSEが返却されます。

“5.3.27 errorNative”の“例”を参照してください。

5.3.5 quote

説明

quoteは、指定した値をSQL文の文字列定数の形式に整形して、文字列を返却します。

構文

mixed quote( string value ) ;

パラメタ

value :

値を指定してください。

空文字列を指定した場合、NULLが返却されます。

戻り値

整形した文字列が返却されます。

- 61 -

Page 70: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

$str = $db->quote( "Don't" ) ;

printf( "%s¥n", $str ) ;

$str = $db->quote( 1000 ) ;

printf( "%s¥n", $str ) ;

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.6 provides

説明

providesは、指定した機能をサポートしているか否かを返却します。

構文

boolean provides( string feature ) ;

パラメタ

feature :

prepareがサポートされているか否かを獲得する場合、"prepare"を指定してください。

pconnectがサポートされているか否かを獲得する場合、"pconnect"を指定してください。

transactionsがサポートされているか否かを獲得する場合、"transactions"を指定してください。

戻り値

指定した機能がサポートされている場合、TRUEが返却されます。

指定した機能がサポートされていない場合、FALSEが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

printf( "prepare : %s¥n", $db->provides( "prepare" ) ? "TRUE" : "FALSE" ) ;

printf( "pconnect : %s¥n", $db->provides( "pconnect" ) ? "TRUE" : "FALSE" ) ;

printf( "transactions : %s¥n", $db->provides( "transactions" ) ? "TRUE" : "FALSE" ) ;

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

- 62 -

Page 71: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

5.3.7 setFetchMode

説明

setFetchModeは、フェッチの取得モードを設定します。

構文

mixed setFetchMode( int fetch_mode [, string class_name ] ) ;

パラメタ

fetch_mode :

フェッチした行の値を配列で獲得する場合、DB_FETCHMODE_ORDEREDを指定してください。

フェッチした行の値を列名で対応付けた連想配列で獲得する場合、DB_FETCHMODE_ASSOCを指定してください。

フェッチした行の値をDB_Rowオブジェクトで獲得する場合、DB_FETCHMODE_OBJECTを指定してください。

class_name :

DB_FETCHMODE_OBJECTを指定した場合、fetchメソッドにより返却されるオブジェクトのクラス名を指定してください。

DB_FETCHMODE_OBJECTを指定した場合で、連想配列をオブジェクトにキャストしたものを獲得する場合、省略してください。

戻り値

何も返却されません。

異常の場合、PEAR_ERRORが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$db->setFetchMode( DB_FETCHMODE_ORDERED ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$values = $result->fetchRow() ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

if( is_null( $values ) ) {

break ;

}

printf( "%d¥n", $values[ 0 ] ) ;

printf( "%s¥n", $values[ 1 ] ) ;

printf( "%d¥n", $values[ 2 ] ) ;

printf( "%d¥n", $values[ 3 ] ) ;

}

$db->setFetchMode( DB_FETCHMODE_ASSOC ) ;

- 63 -

Page 72: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$values = $result->fetchRow() ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

if( is_null( $values ) ) {

break ;

}

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

}

$db->setFetchMode( DB_FETCHMODE_OBJECT ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$db_row = $result->fetchRow() ;

if( DB::isError( $db_row ) ) {

die( $db_row->toString() ) ;

}

if( is_null( $db_row ) ) {

break ;

}

printf( "%d¥n", $db_row->PRODUCT_NUMBER ) ;

printf( "%s¥n", $db_row->PRODUCT_NAME ) ;

printf( "%d¥n", $db_row->STOCK_QUANTITY ) ;

printf( "%d¥n", $db_row->WAREHOUSE_NUMBER ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.8 prepare

説明

prepareは、SQL文を準備し、クエリハンドルを返却します。

構文

resource prepare( string statement ) ;

パラメタ

statement :

SQL文を指定してください。

execute、executeMultipleで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタと同様に“?”を指定してください。

execute、executeMultipleで指定する配列の値をそのままの形の定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラ

メタの代わりに“!”を指定してください。

execute、executeMultipleで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を

組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

- 64 -

Page 73: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepre、execute、executeMultipleの処理でSQL文の組み立て直しを行っ

ていることに注意してください。また、execute、executeMultipleで毎回SQL文の解析を行っており、prepareとexecute、executeMultipleの組み合わせで同じSQL文を実行するときの性能の向上を図ることができるわけではないことに注意してください。

戻り値

クエリハンドルが返却されます。

“5.3.9 execute”の“例”、“5.3.10 executeMultiple”の“例”を参照してください。

5.3.9 execute

説明

executeは、prepareで指定したSQL文と指定された配列の値からSQL文を組み立てて、実行します。

構文

mixed execute( resource query_handle[, array params ]) ;

パラメタ

query_handle :

クエリハンドルを指定してください。

params :

prepareで指定したSQL文中の“?”、“!”、“&”に対応する値の配列を指定してください。

戻り値

SQL文が動的SELECT文の場合、DB_Resultオブジェクトが返却されます。

SQL文が動的SELECT文以外の場合、DB_OKが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$query_handle = $db->prepare( "INSERT INTO STOCKS.STOCK VALUES( !, ?, !, ! )" ) ;

$params = array( 140, "cassette deck", 120, 2 ) ;

$result = $db->execute( $query_handle, $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$params = array( 110, "television", 85, 2 ) ;

$result = $db->execute( $query_handle, $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$params = array( 999, "unknown", 999, 999 ) ;

- 65 -

Page 74: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$result = $db->execute( $query_handle, $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$query_handle = $db->prepare( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER BETWEEN ! AND !" ) ;

$params = array( 110, 140 ) ;

$result = $db->execute( $query_handle, $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.10 executeMultiple

説明

executeMultipleは、指定された配列数分、executeを呼び出します。

構文

mixed executeMultiple( resource query_handle, array params ) ;

パラメタ

query_handle :

クエリハンドルを指定してください。

params :

prepareで指定したSQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

戻り値

DB_Resultオブジェクトが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$query_handle = $db->prepare( "INSERT INTO STOCKS.STOCK VALUES( !, ?, !, ! )" ) ;

$params = array(

- 66 -

Page 75: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

array( 140, "cassette deck", 120, 2 ),

array( 110, "television", 85, 2 ),

array( 999, "unknown", 999, 999 )

) ;

$result = $db->executeMultiple( $query_handle, $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$query_handle = $db->prepare( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER BETWEEN ! AND !" ) ;

$params = array( 110, 140 ) ;

$result = $db->execute( $query_handle, $params ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.11 query

説明

queryは、SQL文を準備および実行し、DB_Resultオブジェクトを返却します。

構文

mixed query( string statement [, array params ] ) ;

パラメタ

statement :

SQL文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的

パラメタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数値でSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指

定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、queryの処理でSQL文の組み立て直しを行っていることに注意してくださ

い。

params :

SQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

戻り値

SQL文が動的SELECT文の場合、DB_Resultオブジェクトが返却されます。

SQL文が動的SELECT文以外の場合、DB_OKが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

- 67 -

Page 76: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$params = array( 140, "cassette deck", 120, 2 ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( !, ?, !, ! )", $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$params = array( 110, "television", 85, 2 ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( !, ?, !, ! )", $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$params = array( 999, "unknown", 999, 999 ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( !, ?, !, ! )", $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

$params = array( 110, 140 ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER BETWEEN ! AND !", $params ) ;

if( DB::isError( $result ) ) {

die( $result->toString() ) ;

}

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.12 limitQuery

説明

limitQueryは未サポートです。

limitQueryを使用したときの動作は不定です。

5.3.13 getOne

説明

getOneは、prepare、execute、fetchRow、freeを呼び出し、先頭行の先頭列の値を返却します。

- 68 -

Page 77: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

構文

mixed getOne( string statement [, array params ] ) ;

パラメタ

statement :

動的SELECT文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的

パラメタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepre、executeの処理でSQL文の組み立て直しを行っていることに注意

してください。

params :

SQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

戻り値

値が返却されます。

値がない場合、NULLが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$values = array( 999 ) ;

$value = $db->getOne( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER = !", $values ) ;

if( DB::isError( $value ) ) {

die( $value->toString() ) ;

}

if( is_null( $value ) ) {

printf( "no record¥n" ) ;

}

$value = $db->getOne( "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NUMBER" ) ;

if( DB::isError( $value ) ) {

die( $value->toString() ) ;

}

printf( "%s¥n", $value ) ;

$db->disconnect() ;

?>

</PRE>

- 69 -

Page 78: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

</BODY>

</HTML>

5.3.14 getRow

説明

getRowは、prepare、execute、fetchRow、freeを呼び出し、先頭行の値の配列を返却します。

構文

mixed getRow( string statement [, array params [, int fetch_mode ] ] ) ;

パラメタ

statement :

動的SELECT文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的

パラメタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepare、executeの処理でSQL文の組み立て直しを行っていることに注意

してください。

params :

SQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

fetch_mode :

フェッチした行の値を配列で獲得する場合、DB_FETCHMODE_ORDEREDを指定してください。

フェッチした行の値を列名で対応付けた連想配列で獲得する場合、DB_FETCHMODE_ASSOCを指定してください。

フェッチした行の値をDB_Rowオブジェクトで獲得する場合、DB_FETCHMODE_OBJECTを指定してください。

戻り値

値の配列、値の連想配列、または、DB_Rowオブジェクトが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$params = array( 999 ) ;

- 70 -

Page 79: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$values = $db->getRow( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER = !", $params ) ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

if( is_null( $values ) ) {

printf( "no record¥n" ) ;

}

$values = $db->getRow( "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NUMBER" ) ;

if( DB::isError( $value ) ) {

die( $value->toString() ) ;

}

printf( "%d¥n", $values[0] ) ;

printf( "%s¥n", $values[1] ) ;

printf( "%d¥n", $values[2] ) ;

printf( "%d¥n", $values[3] ) ;

$params = array() ;

$values = $db->getRow( "SELECT * FROM STOCKS.STOCK", $params, DB_FETCHMODE_ASSOC ) ;

if( DB::isError( $values ) ) {

die( $value->toString() ) ;

}

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

$params = array( 110 ) ;

$db_row = $db->getRow( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER = !", $params,

DB_FETCHMODE_OBJECT ) ;

if( DB::isError( $db_row ) ) {

die( $db_row->toString() ) ;

}

printf( "%d¥n", $db_row->PRODUCT_NUMBER ) ;

printf( "%s¥n", $db_row->PRODUCT_NAME ) ;

printf( "%d¥n", $db_row->STOCK_QUANTITY ) ;

printf( "%d¥n", $db_row->WAREHOUSE_NUMBER ) ;

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.15 getCol

説明

getColは、prepare、execute、fetchRow、freeを呼び出し、指定した一列のすべての行の値の配列を返却します。

構文

mixed getCol( string statement [, mixed field_name_or_number [, array params ] ] ) ;

パラメタ

statement :

動的SELECT文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラ

メタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

- 71 -

Page 80: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepare、executeの処理でSQL文の組み立て直しを行っていることに注意

してください。

field_name_or_number :

列名を指定してください。または、0以上の数値で列番号を指定してください。

params :

SQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

戻り値

配列で値が返却されます。

行がない場合、要素数が0個の配列が返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 999, 'unknown', 999, 999 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$values = $db->getCol( "SELECT * FROM STOCKS.STOCK", 1 ) ;

if( DB::isError( $values ) ) die( $value->toString() ) ;

foreach( $values as $value ) {

printf( "%s¥n", $value ) ;

}

$params = array( 110, 140 ) ;

$values = $db->getCol( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER BETWEEN ! AND !",

"PRODUCT_NAME", $params ) ;

if( DB::isError( $values ) ) die( $value->toString() ) ;

foreach( $values as $value ) {

printf( "%s¥n", $value ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.16 getAssoc

説明

getAssocは、prepare、execute、fetchRow、freeを呼び出し、すべての行の値を一列目の列名で対応付けた連想配列を返却します。

構文

mixed getAssoc( string statement [, boolean force [, array params ] ] ) ;

- 72 -

Page 81: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

パラメタ

statement :

動的SELECT文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的

パラメタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepare、executeの処理でSQL文の組み立て直しを行っていることに注意

してください。

force :

選択リストの列が2つのとき、連想配列の値に配列を設定する場合、TRUEを指定してください。

選択リストの列が2つのとき、連想配列の値に選択リストの2つ目の値を設定する場合、FALSEを指定してください。

params :

SQL文中の“?”、“!”、“&”に対応する値の配列の配列を指定してください。

戻り値

連想配列が返却されます。

行がない場合、要素数が0個の配列が返却されます。

選択リストの列が2個未満の場合、DB_ERROR_TRUNCATEが返却されます。

値がない場合、NULLが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 999, 'unknown', 999, 999 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$values = $db->getAssoc( "SELECT TRIM(PRODUCT_NAME), PRODUCT_NUMBER, STOCK_QUANTITY, WAREHOUSE_NUMBER

FROM STOCKS.STOCK" ) ;

if( DB::isError( $value ) ) die( $value->toString() ) ;

foreach( $values["cassette deck"] as $value ) {

printf( "%s¥n", $value ) ;

}

foreach( $values["television"] as $value ) {

printf( "%s¥n", $value ) ;

}

- 73 -

Page 82: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

foreach( $values["unknown"] as $value ) {

printf( "%s¥n", $value ) ;

}

$params = array( 110, 140 ) ;

$values = $db->getAssoc( "SELECT TRIM(PRODUCT_NAME), PRODUCT_NUMBER FROM STOCKS.STOCK WHERE

PRODUCT_NUMBER BETWEEN ! AND !", TRUE, $params ) ;

if( DB::isError( $values ) ) die( $value->toString() ) ;

foreach( $values["cassette deck"] as $value ) {

printf( "%s¥n", $value ) ;

}

foreach( $values["television"] as $value ) {

printf( "%s¥n", $value ) ;

}

$params = array( 140, 999 ) ;

$values = $db->getAssoc( "SELECT TRIM(PRODUCT_NAME), PRODUCT_NUMBER FROM STOCKS.STOCK WHERE

PRODUCT_NUMBER BETWEEN ! AND !", FALSE, $params ) ;

if( DB::isError( $values ) ) die( $value->toString() ) ;

printf( "%s¥n", $values["cassette deck"] ) ;

printf( "%s¥n", $values["unknown"] ) ;

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.17 getAll

説明

getAllは、prepare、execute、fetchRow、freeを呼び出し、すべての行の値の配列を返却します。

構文

mixed getAll( string statement [, array params [, int fetch_mode ] ] ) ;

パラメタ

statement :

動的SELECT文を指定してください。

paramsで指定する配列の値をシングルクォーテーション(')で囲んだ定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的

パラメタと同様に“?”を指定してください。

paramsで指定する配列の値をそのままの形の定数にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“!”を指定してください。

paramsで指定する配列の値を存在するファイル名として扱い、ファイルから読み込んだ値を定数値にしてSQL文を組み立てる場合、SQL文の値指定に動的パラメタの代わりに“&”を指定してください。

“?”、“!”、“&”は、動的パラメタで実現しているわけではなく、prepare、executeの処理でSQL文の組み立て直しを行っていることに注意

してください。

params :

動的パラメタに対応する値の配列を指定してください。

fetch_mode :

フェッチした行の値を、配列の配列で獲得する場合、DB_FETCHMODE_ORDEREDを指定してください。

フェッチした行の値を、連想配列の配列で獲得する場合、DB_FETCHMODE_ASSOCを指定してください。

フェッチした行の値を、DB_Rowオブジェクトの配列で獲得する場合、DB_FETCHMODE_OBJECTを指定してください。

フェッチした行の値を、配列の連想配列で獲得する場合、DB_FETCHMODE_ASSOCとDB_FETCMODE_FLIPPEDのビット和を指定

してください。

- 74 -

Page 83: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

戻り値

連想配列の配列、オブジェクトの配列または配列の連想配列が返却されます。

行がない場合、要素数が0個の配列が返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 999, 'unknown', 999, 999 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$values = $db->getAll( "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NUMBER" ) ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

foreach( $values as $value ) {

printf( "%d¥n", $value[0] ) ;

printf( "%s¥n", $value[1] ) ;

printf( "%d¥n", $value[2] ) ;

printf( "%d¥n", $value[3] ) ;

}

$params = array() ;

$values = $db->getAll( "SELECT * FROM STOCKS.STOCK", $params, DB_FETCHMODE_ASSOC ) ;

if( DB::isError( $value ) ) {

die( $values->toString() ) ;

}

foreach( $values as $value ) {

printf( "%d¥n", $value["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $value["PRODUCT_NAME"] ) ;

printf( "%d¥n", $value["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $value["WAREHOUSE_NUMBER"] ) ;

}

$params = array() ;

$values = $db->getAll( "SELECT * FROM STOCKS.STOCK", $params, DB_FETCHMODE_ASSOC |

DB_FETCHMODE_FLIPPED ) ;

if( DB::isError( $values ) ) die( $values->toString() ) ;

foreach( $values as $key => $value ) {

printf( "%s¥n", $key ) ;

foreach( $value as $val ) {

printf( "%s¥n", $val ) ;

}

}

$params = array( 110, 140 ) ;

$db_rows = $db->getAll( "SELECT * FROM STOCKS.STOCK WHERE PRODUCT_NUMBER BETWEEN ! AND !", $params,

DB_FETCHMODE_OBJECT ) ;

if( DB::isError( $db_rows ) ) {

die( $db_rows->toString() ) ;

- 75 -

Page 84: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

}

foreach( $db_rows as $db_row ) {

printf( "%d¥n", $db_row->PRODUCT_NUMBER ) ;

printf( "%s¥n", $db_row->PRODUCT_NAME ) ;

printf( "%d¥n", $db_row->STOCK_QUANTITY ) ;

printf( "%d¥n", $db_row->WAREHOUSE_NUMBER ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.18 affectedRows

説明

affected Rowsは、結果の行数を返却します。

構文

mixed affectedRows( void ) ;

戻り値

SQL文が動的SELECT文の場合、0が返却されます。

SQL文がINSERT文、UPDATE文:探索、UPDATE文:位置付け、DELETE文:探索、DELETE文:位置付けの場合、更新件数が返却

されます。

SQL文がINSERT文、UPDATE文:探索、DELETE文:探索以外の場合、0が返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$affectedRows = $db->affectedRows() ;

if( DB::isError( $affectedRows ) ) {

printf( "%s¥n", $affectedRows->toString() ) ;

}

printf( "affectedRows : %s¥n", $affectedRows ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$affectedRows = $db->affectedRows() ;

if( DB::isError( $affectedRows ) ) {

printf( "%s¥n", $affectedRows->toString() ) ;

}

printf( "affectedRows : %s¥n", $affectedRows ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$affectedRows = $db->affectedRows() ;

if( DB::isError( $affectedRows ) ) {

- 76 -

Page 85: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "%s¥n", $affectedRows->toString() ) ;

}

printf( "affectedRows : %s¥n", $affectedRows ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$affectedRows = $db->affectedRows() ;

if( DB::isError( $affectedRows ) ) {

printf( "%s¥n", $affectedRows->toString() ) ;

}

printf( "affectedRows : %s¥n", $affectedRows ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.19 nextId

説明

nextIdは未サポートです。

nextIdを使用したときの動作は不定です。

5.3.20 createSequence

説明

createSequenceは未サポートです。

createSequenceを使用したときの動作は不定です。

5.3.21 dropSequence

説明

dropSequenceは未サポートです。

dropSequenceを使用したときの動作は不定です。

5.3.22 tableInfo

説明

tableInfoは未サポートです。

tableInfoを使用したときの動作は不定です。

5.3.23 getListOf

説明

getListOfは未サポートです。

getListOfを使用したときの動作は不定です。

- 77 -

Page 86: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

5.3.24 autoCommit

説明

autoCommitは、自動的にコミットとするか否かを設定し、復帰値を返却します。

構文

mixed autoCommit( bool void ) ;

戻り値

DB_OKを返却します。

異常の場合、DB_Errorオブジェクトを返却します。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->autoCommit( FALSE ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->commit() ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->rollback() ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->autoCommit( TRUE ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.3.25 commit

説明

commitは、データベースをコミットし、復帰値を返却します。

- 78 -

Page 87: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

構文

mixed commit( void ) ;

戻り値

DB_OKを返却します。

異常の場合、DB_Errorオブジェクトを返却します。

“5.3.24 autoCommit”の“例”を参照してください。

5.3.26 rollback

説明

rollbackは、データベースをロールバックし、復帰値を返却します。

構文

mixed rollback( void ) ;

戻り値

DB_OKを返却します。

異常の場合、DB_Errorオブジェクトを返却します。

“5.3.24 autoCommit”の“例”を参照してください。

5.3.27 errorNative

説明

errorNativeは、SQLSTATEとSQLMSGからなるエラー文字列を返却します。

SQLSTATEはデータベースアクセスの状態を5バイトの文字列で表します。SQLSTATEの詳細は、“SQLリファレンスガイド”

の“SQLSTATE”を参照してください。

SQLMSGは、データベースアクセスのエラーメッセージの文字列です。SQLMSGの詳細は、“まえがき”の“Symfoware/RDBが出力す

るメッセージの処置を参照する”を参照してください。

構文

string errorNative( void ) ;

戻り値

エラー文字列を返却します。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

- 79 -

Page 88: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT -- ILLEGAL" ) ;

if( DB::isError( $result ) ) {

printf( "%s¥n", $result->toString() ) ;

printf( "%s¥n", $db->ErrorNative() ) ;

}

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$result = $db->query( "SELECT 300 / ( PRODUCT_NUMBER - 110 ) FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

// zero divide

if( DB::isError( $result ) ) {

printf( "%s¥n", $result->toString() ) ;

printf( "%s¥n", $db->ErrorNative() ) ;

}

$result = $db->query( "DELETE FROM STOCKS.STOCK" ) ;

// normal

if( DB::isError( $result ) ) {

printf( "%s¥n", $result->toString() ) ;

printf( "%s¥n", $db->ErrorNative() ) ;

}

$result = $db->query( "DELETE FROM STOCKS.STOCK" ) ;

// no record

if( DB::isError( $result ) ) {

printf( "%s¥n", $result->toString() ) ;

printf( "%s¥n", $db->ErrorNative() ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.4 DB_Resultクラス

DB_Resultクラスについて説明します。

5.4.1 fetchRow

- 80 -

Page 89: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

説明

fetchRowは、次の行または指定した行をフェッチし、配列を返却します。

構文

mixed fetchRow( [ int fetch_mode [, int row_number ] ] ) ;

パラメタ

fetch_mode :

フェッチした行の値を配列で獲得する場合、DB_FETCHMODE_ORDEREDを指定してください。

フェッチした行の値を列名で対応付けた連想配列で獲得する場合、DB_FETCHMODE_ASSOCを指定してください。

フェッチした行の値をDB_Rowオブジェクトで獲得する場合、DB_FETCHMODE_OBJECTを指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

戻り値

配列、連想配列、または、オブジェクトが返却されます。

行がない場合、NULLが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$values = $result->fetchRow() ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

if( is_null( $values ) ) {

break ;

}

printf( "%d¥n", $values[ 0 ] ) ;

printf( "%s¥n", $values[ 1 ] ) ;

printf( "%d¥n", $values[ 2 ] ) ;

printf( "%d¥n", $values[ 3 ] ) ;

}

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

- 81 -

Page 90: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$values = $result->fetchRow( DB_FETCHMODE_ASSOC ) ;

if( DB::isError( $values ) ) {

die( $values->toString() ) ;

}

if( is_null( $values ) ) {

break ;

}

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

}

$result = $db->query( "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NUMBER" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( $y = 1 ; $y >= 0 ; $y -- ) {

$db_row = $result->fetchRow( DB_FETCHMODE_OBJECT, $y ) ;

if( DB::isError( $db_row ) ) {

die( $db_row->toString() ) ;

}

printf( "%d¥n", $db_row->PRODUCT_NUMBER ) ;

printf( "%s¥n", $db_row->PRODUCT_NAME ) ;

printf( "%d¥n", $db_row->STOCK_QUANTITY ) ;

printf( "%d¥n", $db_row->WAREHOUSE_NUMBER ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.4.2 fetchInto

説明

fetchIntoは、次の行または指定した行をフェッチし、配列を返却します。

構文

mixed fetchInto( mixed &value [, int fetch_mode [, int row_number ] ] ) ;

パラメタ

value :

値を受け取る変数を指定してください。

fetch_mode :

フェッチした行の値を配列で獲得する場合、DB_FETCHMODE_ORDEREDを指定してください。

フェッチした行の値を列名で対応付けた連想配列で獲得する場合、DB_FETCHMODE_ASSOCを指定してください。

フェッチした行の値をDB_Rowオブジェクトで獲得する場合、DB_FETCHMODE_OBJECTを指定してください。

row_number :

1以上の数値で行番号を指定してください。

次の行をフェッチする場合、省略してください。

戻り値

配列が返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

- 82 -

Page 91: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$rc = $result->fetchInto( $values ) ;

if( DB::isError( $rc ) ) {

die( $rc->toString() ) ;

}

if( ! $rc ) {

break ;

}

printf( "%d¥n", $values[ 0 ] ) ;

printf( "%s¥n", $values[ 1 ] ) ;

printf( "%d¥n", $values[ 2 ] ) ;

printf( "%d¥n", $values[ 3 ] ) ;

}

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( ; ; ) {

$rc = $result->fetchInto( $values, DB_FETCHMODE_ASSOC ) ;

if( DB::isError( $rc ) ) {

die( $rc->toString() ) ;

}

if( ! $rc ) {

break ;

}

printf( "%d¥n", $values["PRODUCT_NUMBER"] ) ;

printf( "%s¥n", $values["PRODUCT_NAME"] ) ;

printf( "%d¥n", $values["STOCK_QUANTITY"] ) ;

printf( "%d¥n", $values["WAREHOUSE_NUMBER"] ) ;

}

$result = $db->query( "SELECT * FROM STOCKS.STOCK ORDER BY PRODUCT_NUMBER" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

for( $y = 1 ; $y >= 0 ; $y -- ) {

$rc = $result->fetchInto( $db_row, DB_FETCHMODE_OBJECT, $y ) ;

if( DB::isError( $rc ) ) {

die( $rc->toString() ) ;

}

printf( "%d¥n", $db_row->PRODUCT_NUMBER ) ;

printf( "%s¥n", $db_row->PRODUCT_NAME ) ;

printf( "%d¥n", $db_row->STOCK_QUANTITY ) ;

printf( "%d¥n", $db_row->WAREHOUSE_NUMBER ) ;

}

$db->disconnect() ;

?>

</PRE>

- 83 -

Page 92: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

</BODY>

</HTML>

5.4.3 numCols

説明

numColsは、結果の列数を返却します。

構文

int numCols( void ) ;

戻り値

列数が返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

printf( "numCols : %d¥n", $result->numCols() ) ;

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.4.4 numRows

説明

numRowsは、結果の行数を返却します。

構文

int numRows( void ) ;

- 84 -

Page 93: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

戻り値

SQL文が動的SELECT文の場合、DB_Errorオブジェクトが返却されます。

異常の場合、DB_Errorオブジェクトが返却されます。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$numRows = $result->numRows() ;

if( DB::isError( $numRows ) ) {

printf( "%s¥n", $numRows->toString() ) ;

}

while( $values = $result->fetchRow() ) {

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.4.5 nextResult

説明

nextResultは未サポートです。

nextResultを使用したときの動作は不定です。

5.4.6 free

説明

freeは、明示的にフェッチを終了し、復帰値を返却します。

構文

mixed free( void ) ;

戻り値

TRUEを返却します。

- 85 -

Page 94: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

異常の場合、DB_Errorオブジェクトを返却します。

<HTML>

<BODY>

<PRE>

<?php

require_once( "DB.php" ) ;

$db = DB::connect( "symfoware://rdbmng:******@RDBDB" ) ;

if( DB::isError( $db ) ) die( $db->toString() ) ;

$db->query( "DROP TABLE STOCKS.STOCK CASCADE" ) ;

$result = $db->query( "CREATE TABLE STOCKS.STOCK ( PRODUCT_NUMBER INTEGER NOT NULL, PRODUCT_NAME

CHAR(20) NOT NULL, STOCK_QUANTITY INTEGER, WAREHOUSE_NUMBER SMALLINT NOT NULL ) ON DBSP1" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 140, 'cassette deck', 120, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "INSERT INTO STOCKS.STOCK VALUES( 110, 'television', 85, 2 )" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$result = $db->query( "SELECT * FROM STOCKS.STOCK" ) ;

if( DB::isError( $result ) ) die( $result->toString() ) ;

$values = $result->fetchRow() ;

for( $x = 0 ; $x < $result->numCols() ; $x ++ ) {

if( $x != 0 ) printf( " " ) ;

printf( "%s", $values[ $x ] ) ;

}

printf( "¥n" ) ;

$result->free() ;

$values = @( $result->fetchRow() ) ; // warning

if( is_null( $values ) ) {

printf( "no record¥n" ) ;

}

$db->disconnect() ;

?>

</PRE>

</BODY>

</HTML>

5.5 DB_Errorクラス

DB_Errorクラスについて説明します。

DB_Errorクラスは、PEAR_Errorクラスを継承しており、PEAR_Errorクラスが持つメソッドを利用することができます。

PEAR_Errorクラスが持つメソッドのうち、よく使用するメソッドを挙げます。

5.5.1 getMessage

説明

getMessageは、DBクラスのエラー文字列を返却します。

getMessageで得られるエラー文字列には、データベースアクセスに関するエラー文字列は埋め込まれていませんので、toStringを使用

することを推奨します。toStringの詳細は、“5.5.2 toString”を参照してください。

構文

string getMessage( void ) ;

戻り値

DBクラスのエラー文字列を返却します。

- 86 -

Page 95: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

5.5.2 toString

説明

toStringは、SQLMSGを含むエラー文字列を返却します。

SQLMSGは、データベースアクセスのエラーメッセージの文字列です。SQLMSGの詳細は、“まえがき”の“Symfoware/RDBが出力す

るメッセージの処置を参照する”を参照してください。

構文

string toString( void ) ;

戻り値

SQLMSGを含むエラー文字列を返却します。

“5.3.27 errorNative”の“例”を参照してください。

5.6 DB_Warningクラス

DB_Warningクラスについて説明します。

現状、DBクラスのメソッドでSymfoware/RDBのエラーが発生したときは、エラーコードかDB_Errorオブジェクトのみを返却し、DB_Warningオブジェクトを返却することはありません。

将来的に、DBクラスのメソッドでエラーが発生したときに、DB_Warningオブジェクトを返却することがあると考えられます

5.7 Cacheクラス

Cacheクラスについて説明します。

Cacheクラス

Cacheクラスは、出力の内容を保存しておき、必要に応じて保存しておいた出力の内容を再利用する機能です。

Cacheクラスは、ファイルまたはPEARのDBクラスを用いて、出力の内容をファイルまたはデータベースに保存します。

しかし、Cacheクラスのデータベースアクセス処理において、特定のデータベースに特価した処理を行っているため、出力の内容を

Symfoware/RDBのデータベースに保存することはできません。

- 87 -

Page 96: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第6章 PHPlib for Symfowareの仕様

本章では、PHPlib for Symfowareを用いてSymfoware/RDBのデータベースをアクセスするときの仕様について説明します。

6.1 PHPlib for Symfowareの概要

6.2 PHPlibの使用例

6.1 PHPlib for Symfowareの概要

PHPlib for Symfowareの概要について説明します。

6.1.1 PHPlibの特徴

PHPlibの特徴について説明します。

PHPlibの特徴

PHPlibは、PHP 3の時点で有志によって開発されたクラスライブラリです。PHP 3やPHP 4には同梱されていません。

PHPlibは、データベースアクセス機能、セション機能、認証機能、パーミッション管理機能およびユーザ変数機能の処理がクラス化さ

れています。データベースアクセス自体はセション機能、認証機能、パーミッション管理機能およびユーザ変数機能のクラスの情報の

格納として使用されるものであり、複数データベースベンダのデータベースアクセスを1つのインターフェースに集約(データベースア

クセスの抽象化)することだけを目的とはしていません。

実際に使用する場合は、これらのクラスを継承して新規のクラスを作成し、新規のクラスで処理の一部分を乗せ換えます。PHPスクリプ

トでは、新規のクラスを使用します。

よって、PHPlibで提供されているクラスは、セション機能、認証機能、パーミッション管理機能およびユーザ変数機能のサンプルのよう

なものであるといえます。

PHP 4の新機能

PHP 4ではセションなどがサポートされています。

また、PHP 4にはPEARと呼ばれるライブラリが同梱されていて、データベースアクセスの処理がクラス化されています。

今後は、PHP 4が持つセション機能や、PEARが持つデータベースアクセスの機能が主流となると考えられます。

PHPlibの選択

既存のPHPスクリプトがPHPlibを用いていて、そのまま既存のPHPスクリプトを流用する場合には、PHPlibを使用してください。

新規にPHPスクリプトを作成する場合、PHPlibを使用するべきか否かを充分に検討してください。

6.1.2 PHPlibで使用するファイル

PHPlibで使用するファイルについて説明します。

PHPlibローカル定義ファイル

PHPlibローカル定義ファイルは、PHPlibの各クラスを継承して新規のクラスを作成します。

Linuxの場合、/usr/local/lib/php/phplib配下にlocal.incがあります。

local.incを修正し、各機能のクラスを継承します

【修正前】

class DB_Example extends DB_Sql {

var $Host = "localhost";

var $Database = "example_database";

var $User = "example_user";

var $Password = "";

}

- 88 -

Page 97: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

・・・

class Example_CT_Sql extends CT_Sql {

var $database_class = "DB_Example";

var $database_table = "active_sessions";

}

・・・

#class Example_CT_Split_Sql extends CT_Split_Sql {

# var $database_class = "DB_Example";

# var $database_table = "active_sessions_split";

# var $split_length = 4096;

#}

・・・

class Example_Auth extends Auth {

var $classname = "Example_Auth";

var $lifetime = 15;

var $database_class = "DB_Example";

var $database_table = "auth_user";

・・・

}

・・・

class Example_Challenge_Crypt_Auth extends Auth {

var $classname = "Example_Challenge_Crypt_Auth";

var $lifetime = 1;

var $magic = "Frobozzica";

var $database_class = "DB_Example";

var $database_table = "auth_user_md5";

・・・

}

・・・

class Example_Challenge_Auth extends Auth {

var $classname = "Example_Challenge_Auth";

var $lifetime = 1;

var $magic = "Simsalabim";

var $database_class = "DB_Example";

var $database_table = "auth_user";

・・・

}

【修正後】

class DB_Example extends DB_Sql {

var $Host = "";

var $Database = "データソース名";

var $User = "認可識別子";

var $Password = "パスワード";

}

・・・

class Example_CT_Sql extends CT_Sql {

var $database_class = "DB_Example";

var $database_table = "スキーマ名.active_sessions";

}

・・・

#class Example_CT_Split_Sql extends CT_Split_Sql {

# var $database_class = "DB_Example";

# var $database_table = "スキーマ名.active_sessions_split";

# var $split_length = 4096;

#}

・・・

class Example_Auth extends Auth {

var $classname = "Example_Auth";

var $lifetime = 15;

var $database_class = "DB_Example";

var $database_table = "スキーマ名.auth_user";

・・・

- 89 -

Page 98: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

}

・・・

class Example_Challenge_Auth extends Auth {

var $classname = "Example_Challenge_Auth";

var $lifetime = 1;

var $magic = "Simsalabim";

var $database_class = "DB_Example";

var $database_table = "スキーマ名.auth_user";

}

・・・

class Example_Challenge_Crypt_Auth extends Auth {

var $classname = "Example_Challenge_Crypt_Auth";

var $lifetime = 1;

var $magic = "Frobozzica";

var $database_class = "DB_Example";

var $database_table = "スキーマ名.auth_user_md5";

・・・

}

データソース名、認可識別子およびパスワードは、DB_Sqlクラスでsymfoware_pconnectの呼び出しに使用されます。データソース名、

認可識別子、パスワード、symfoware_pconnectの詳細は、“4.2.33 symfoware_pconnect”を参照してください。

表“スキーマ名.active_sessions”、“スキーマ名.active_sessions_split”、“スキーマ名.auth_user”、“スキーマ名.auth_user_md5”、は、“2.1.7 PHPのインストール”で作成した表であり、セション機能、認証機能、パーミッション管理機能およびユーザ変数機能の各ク

ラスで使用されます。

PHPlib読み込みPHPスクリプトファイル

PHPlib読み込みPHPスクリプトファイルは、PHPlibの各クラスの定義ファイルをまとめて読み込みます。

Linuxの場合、/usr/local/lib/php/phplib配下にprepend.phpがあります。

prepend.phpを修正し、db_symfoware.incの読み込み指定を記述します。

【修正前】

require($_PHPLIB["libdir"] . "db_mysql.inc");

【修正後】

require($_PHPLIB["libdir"] . "db_symfoware.inc");

6.2 PHPlibの使用例

PHPlibの使用例について説明します。

6.2.1 セション機能の使用例

セション機能の使用例について説明します。

セション機能の使用例

セション機能の使用例を以下に示します。

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session" )) ;

$sess->register( "count" ) ;

$count ++ ;

?>

<HTML><BODY><PRE>

<?php

printf( "count : %d¥n", $count ) ;

?>

</PRE></BODY></HTML>

<?php

- 90 -

Page 99: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

page_close() ;

?>

6.2.2 認証機能の使用例

認証機能の使用例について説明します。

ログイン認証機能の使用例

ログイン認証機能の使用例を以下に示します。

ログイン画面を表示し、ログインする

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth" ) ) ;

?>

<HTML><BODY><PRE>

<?php

printf( "user : %s¥n", $auth->auth[ "uname" ] ) ;

printf( "id : %s¥n", $auth->auth[ "uid" ] ) ;

printf( "perm : %s¥n", $auth->auth[ "perm" ] ) ;

printf( "expire : %s¥n", date( "Y/m/d H:i:s", $auth->auth[ "exp" ] ) ) ;

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

ログイン済みかを判定する

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth" ) ) ;

$id = $auth->is_authenticated() ;

?>

<HTML><BODY><PRE>

<?php

if( $id ) {

printf( "you are authorized¥n" ) ;

}

else {

printf( "you are not authorized¥n" ) ;

}

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

ログアウトする

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth" ) ) ;

$auth->logout() ;

?>

<HTML><BODY><PRE>

<?php

printf( "logout¥n" ) ;

?>

</PRE></BODY></HTML>

<?php

- 91 -

Page 100: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

page_close() ;

?>

ダイジェスト認証機能の使用例

ダイジェスト認証機能の使用例を以下に示します。

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Challenge_Auth" ) ) ;

?>

<HTML><BODY><PRE>

<?php

printf( "username : %s¥n", $_POST[ "username" ] ) ;

printf( "password : %s¥n", $_POST[ "password" ] ) ;

printf( "response : %s¥n", $_POST[ "response" ] ) ;

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

6.2.3 パーミッション管理機能の使用例

パーミッション管理機能の使用例について説明します。

パーミッション管理機能の使用例

パーミッション管理機能の使用例を以下に示します。

ログイン画面を表示し、adminであるかを判定する

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth", "perm" =>

"Example_Perm" ) ) ;

$perm->check( "admin" ) ;

?>

<HTML><BODY><PRE>

<?php

printf( "you are admin¥n" ) ;

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

adminでログインしているかを判定する

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth", "perm" =>

"Example_Perm" ) ) ;

if( $perm->have_perm( "admin" ) ) {

$bPerm = TRUE ;

}

else {

$bPerm = FALSE ;

}

?>

<HTML><BODY><PRE>

<?php

if( $bPerm ) {

- 92 -

Page 101: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

printf( "you are admin¥n" ) ;

}

else {

printf( "you are not admin¥n" ) ;

}

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

6.2.4 ユーザ変数機能の使用例

ユーザ変数機能の使用例について説明します。

ユーザ変数機能の使用例

ユーザ変数機能の使用例を以下に示します。

<?php

require_once( "prepend.php" ) ;

page_open( array( "sess" => "Example_Session", "auth" => "Example_Auth", "user" =>

"Example_User" ) ) ;

$sess->register( "count" ) ;

$count ++ ;

$user->register( "u_count" ) ;

$u_count ++ ;

?>

<HTML><BODY><PRE>

<?php

printf( "count : %d¥n", $count ) ;

printf( "u_count : %d¥n", $u_count ) ;

?>

</PRE></BODY></HTML>

<?php

page_close() ;

?>

- 93 -

Page 102: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第7章 PHP Symfowareの環境設定

本章では、PHP Symfowareの環境の設定について説明します。

7.1 PHP 動作環境ファイル

7.2 パラメタの詳細

7.1 PHP動作環境ファイル

PHP動作環境ファイルについて説明します。

PHP環境php.ini

PHP環境ファイルは、PHPの各種の動作環境を指定します。

Liunxの場合、/usr/local/lib配下にphp.iniがあります。

この動作環境ファイルphp.iniに、PHP Symfowareの動作環境を設定することができます。

デフォルトでは、PHP Symfowareの動作環境は設定されていませんので、適時、PHP Symfowareの動作環境を設定してください。

PHP Symfowareの動作環境の設定形式

[Symfoware]

; コメント

パラメタ = 値

パラメタ = 値

・・・

7.2 パラメタの詳細

パラメタの詳細について説明します。

7.2.1 symfoware.default_db

説明

symfoware.default_dbは、接続でデータソース名を省略した時に代わりに指定するデータソース名を設定します。

symfoware.default_dbを省略した場合、データソース名は空文字となります。

構文

symfoware.default_db = データソース名

パラメタ

データソース名 :

データソース名を指定してください。データソース名の詳細は、“4.2.8 symfoware_connect”を参照してください。

7.2.2 symfoware.default_user

説明

symfoware.default_userは、接続で認可識別子を省略した時に代わりに指定する認可識別子を設定します。

symfoware.default_userを省略した場合、認可識別子は空文字となります。

- 94 -

Page 103: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

構文

symfoware.default_user = 認可識別子

パラメタ

認可識別子 :

認可識別子を指定してください。

7.2.3 symfoware.default_pw

説明

symfoware.default_pwは、接続でパスワードを省略した時に代わりに指定するパスワードを設定します。

symfoware.default_pwを省略した場合、パスワードは空文字となります。

構文

symfoware.default_pw = パスワード

パラメタ

パスワード :

パスワードを指定してください。

7.2.4 symfoware.allow_persistent

説明

symfoware.allow_persistent は、持続的な接続を可能とするか否かを設定します。持続的な接続の詳細は、 “ 4.2.33symfoware_pconnect”を参照してください。

symfoware.allow_persistentを省略した場合、持続的な接続を可能とします。

構文

symfoware.allow_persistent = On | Off

パラメタ

On :

持続的な接続を可能とする場合、Onを指定してください。

Off :

持続的な接続を不可能とする場合、Offを指定してください。

7.2.5 symfoware.check_persistent

説明

symfoware.check_persistentは、持続的な接続を行う前に、接続が有効であるかを判定するか否かを設定します。持続的な接続の詳

細は、“4.2.33 symfoware_pconnect”を参照してください。

symfoware.check_persistentを省略した場合、接続が有効であるかを判定します。

構文

symfoware.check_persistent = On | Off

- 95 -

Page 104: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

パラメタ

On :

接続が有効であるかを判定する場合、Onを指定してください。

Off :

接続が有効であるかを判定しない場合、Offを指定してください。

7.2.6 symfoware.max_persistent

説明

symfoware.max_persistentは、持続的な接続の 大数を設定します。持続的な接続の詳細は、“4.2.33 symfoware_pconnect”を参照し

てください。

構文

symfoware.max_persistent = 大接続数

パラメタ

大接続数 :

持続的な接続の 大数を指定してください。

持続的な接続を無限とする場合、-1を指定してください。

7.2.7 symfoware.max_links

説明

symfoware.max_linksは、接続の 大数を設定します。

接続の 大数には、持続的な接続を含みます。持続的な接続の詳細は、“4.2.33 symfoware_pconnect”を参照してください。

構文

symfoware.max_links = 大接続数

パラメタ

大接続数 :

接続の 大数を指定してください。

接続を無限とする場合、-1を指定してください。

7.2.8 symfoware.defaultlrl

説明

symfoware.defaultlrlは、フェッチするデータの長さ(バイト数)の省略値を設定します。

省略値は、4096です。

構文

symfoware.defaultlrl = データ長

パラメタ

データ長 :

フェッチするデータの長さを指定してください。

- 96 -

Page 105: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

7.2.9 symfoware.defaultbinmode

説明

symfoware.defaultbinmodeは、バイナリデータの処理方法を設定します。

省略値は1です。

バイナリデータの処理方法の詳細は、“4.2.2 symfoware_binmode”を参照してください。

構文

symfoware.defaultbinmode = モード

パラメタ

モード:

バイナリデータをそのまま出力に渡す場合、0を指定してください。

バイナリデータのままとする場合、1を指定してください。

16進文字表記の文字列とする場合、2を指定してください。

- 97 -

Page 106: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第8章 RDBコマンドの呼び出し

本章では、PHPのコマンド呼び出し機能を用いてPHPからRDBコマンドを呼び出す方法について説明します。

8.1 RDBコマンドの呼び出し方法

8.2 RDBコマンドの呼び出し例

8.1 RDBコマンドの呼び出し方法

RDBコマンドの呼び出し方法について説明します。

RDBコマンドの呼び出しとは

PHPにはコマンドを呼び出す機能が用意されています。この機能を用いてRDBコマンドを呼び出すことが可能です。

RDBコマンドを実行するマシン

PHPスクリプトからRDBコマンドを呼び出したとき、PHPスクリプトを実行しているマシン以外のSymfoware/RDBに対するRDBコマンドが

呼び出されます。PHPスクリプトを実行しているマシン以外のSymfoware/RDBに対するRDBコマンドの呼び出しはできません。

RDBコマンドを実行するユーザ

PHPスクリプトからRDBコマンドを呼び出したとき、Apache動作環境ファイルのUserディレクティブで指定したユーザ(デフォルトは

nobody、Symfoware/RDBは大文字のNOBODYとして扱う)がRDBコマンドを実行するユーザとなります。

PHPスクリプトから、実行するユーザを判定するRDBコマンドを呼び出す場合、PHPスクリプトを実行するユーザ(NOBODYや

SYSTEM)に対し、資源を操作することのできる権限を与える必要があります。実行するユーザを判定するRDBコマンドや権限の詳細

は、“RDB管理者ガイド”の“各操作で必要な権限”を参照してください。

PHPスクリプトの実行者の考慮

PHPスクリプトでRDBコマンドの呼び出しを行うようにすると、WWWブラウザからPHPスクリプトを実行できるすべての人がRDBコマンド

を実行できることになってしまいます。

よって、Apacheのアクセス制御機能を用いるなどの対処を行うことでて、PHPスクリプトの実行者を限定することを推奨します。

Apacheのアクセス制御機能には、ユーザ名によるアクセス制御、IPアドレスによるアクセス制御があります。

8.2 RDBコマンドの呼び出し例

RDBコマンドの呼び出し例について説明します。

8.2.1 systemを用いたRDBコマンドの呼び出し

systemを用いたRDBコマンドの呼び出しについて説明します。

systemとは

systemは、コマンドを実行し、コマンドの結果文字列をそのまま表示し、コマンドの復帰値とコマンドの結果文字列の 終行を返却しま

す。

systemは、標準入力によるデータを必要としないRDBコマンドの呼び出しに使用することができます。

systemを用いたRDBコマンドの呼び出し例

systemを用いたRDBコマンドの呼び出し例を以下に示します。

<HTML>

<BODY>

<PRE>

<?php

- 98 -

Page 107: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

$str = system( "rdbps 2>&1", $rc ) ;

printf( "rc : %d¥n", $rc ) ;

printf( "str : %s¥n", $str ) ;

?>

</PRE>

</BODY>

</HTML>

8.2.2 execを用いたRDBコマンドの呼び出し

execを用いたRDBコマンドの呼び出しについて説明します。

execとは

execは、コマンドを実行し、コマンドの結果文字列の配列、コマンドの復帰値とコマンドの結果文字列の 終行を返却します。コマンド

の結果文字列は表示されません。

execは、標準入力によるデータを必要としないRDBコマンドの呼び出しに使用することができます。

execを用いたRDBコマンドの呼び出し例

execを用いたRDBコマンドの呼び出し例を以下に示します。

<HTML>

<BODY>

<PRE>

<?php

$str = exec( "rdbps 2>&1", $values, $rc ) ;

printf( "rc : %d¥n", $rc ) ;

printf( "str : %s¥n", $str ) ;

foreach( $values as $value ) {

printf( "%s¥n", $value ) ;

}

?>

</PRE>

</BODY>

</HTML>

8.2.3 popenを用いたRDBコマンドの呼び出し

popenを用いたRDBコマンドの呼び出しについて説明します。

popenとは

popenは、コマンドに対する標準入力または標準出力のハンドルを返却します。

popenは、標準入力を送り込むか標準出力のデータを受け取るかのどちらかとなります。また、コマンドの復帰値を得ることができませ

ん。よって、実用的に使えるものとはいえません。

将来的には、proc_openによって、コマンドに対して標準入力、標準出力と標準エラー出力に対する操作が可能となり、かつ、復帰値

を得ることができるようになる予定です。

- 99 -

Page 108: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

第9章 注意事項

PHPからSymfoware/RDBのデータベースをアクセスするときの注意事項について説明します。

9.1 PHP Symfowareの制限

9.2 RDBコマンドの呼び出しの制限

9.3 マルチバイト文字列の注意

9.1 PHP Symfowareの制限

PHP Symfowareの制限について説明します。

自動コミットの動作

自動コミットにおいて、検索中に他のSQL文を実行すると、検索を続けることができなくなります。また、複数の検索を行っているときに、

ある1つの検索が終了すると他の検索を続けることができなくなります。検索中に他のSQL文を実行するときや複数の検索を行う場合

は、自動コミットを使用しないでください。

文字列長の制限

文字列型において、取り出すときの長さが32000バイトを超えるものは検索できません。データベース内部文字コードの長さより取り出

すときの文字コードの長さが延びる場合は、32000を超えることがありますので注意が必要です。

動的パラメタの制限

動的パラメタの精度と位取りは、対応する列の精度と位取りを採用します。

格納構造がOBJECTの場合の制限

格納構造がOBJECTの場合、BLOB型の列をフェッチすることはできません。

値式の制限

値式にROW_ID(行識別子)を指定することはできません。

列名の取得の制限

symfoware_field_nameを用いて選択リストの列名を取得した時、列名は必ずOSの文字コード系となります。

9.2 RDBコマンドの呼び出しの制限

RDBコマンド呼び出しの制限について説明します。

PHP SymfowareによるデータベースアクセスとRDBコマンドの呼び出しの混在不可

PHPスクリプトからRDBコマンドを呼び出したとき、PHPインタプリタのプロセスからRDBコマンドのプロセスが生成されます。

PHPスクリプトからPHP Symfowareを用いたSymfoware/RDBへのアクセス中にRDBコマンドを呼び出した場合、PHPスクリプトのプロセスと

RDBコマンドのプロセスの間で排他が発生し、排他エラーや排他待ちが発生する可能性があります。

よって、PHPスクリプトからPHP Symfowareを用いたSymfoware/RDBへのアクセス中にRDBコマンドを呼び出さないでください。

排他の詳細は、“RDB ユーザーズガイド データベース定義編”の“応用プログラムおよびRDBコマンド間の排他”を参照してください。

停止しないRDBコマンドの呼び出し不可

rdblkinfコマンドに-dオプションを指定した場合、rdblkinfコマンドは強制停止が行われるまで実行中となります。

PHPスクリプトから実行中のコマンドを強制停止する方法がありません。

よって、PHPスクリプトから停止しないRDBコマンドを呼び出さないようにしてください。

- 100 -

Page 109: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

9.3 マルチバイト文字列の注意

マルチバイト文字列の注意について説明します。

9.3.1 マルチバイト文字列の問題

マルチバイト文字列の問題について説明します。

マルチバイト文字列の問題とは

PHPには、PHPスクリプト中の文字にEUC(Extended UNIX Code)、シフトJISコードが含まれているときの考慮が足りません。そのため

いくつかの問題が起こることが分かっています。

正規表現の問題

文字列が"A"から"Z"の範囲であることを判定する場合に"A-Z"という正規表現を用います。一方、文字列が"あ"から"ん"の範囲である

ことを判定する場合に"あ-ん"という正規表現を用いても、期待する結果になりません。

文字列長、部分文字列の問題

処理の内容によっては、文字"あ"を一文字と換算したいことがありますが、、文字列の長さはバイト数です。よって、"あいうえお"の長さは

10バイトであり、マルチバイト文字列"あいうえお"から二文字目を取り出すと、"い"ではなく"あ"の後方1バイトの文字となります。

シフトJIS文字列の0x5cの問題

シフトJIS文字列中に16進数で0x5c(¥)の文字を含む場合、PHPの構文エラーとなります。これを避けるためには、EUCコードのPHPスクリプトに書き直すか、0x5cの前に0x5cを指定する必要があります。

0x5cの前に0x5cを指定する例を以下に示します。

<HTML>

<BODY>

<PRE>

<?php

$connection_id = symfoware_connect( "RDBDB", "rdbmng", "******" ) or die( symfoware_errormsg() ) ;

@symfoware_exec( $connection_id, "DROP TABLE STOCKS.在庫表¥ CASCADE" ) ;

symfoware_exec( $connection_id, "CREATE TABLE STOCKS.在庫表¥ ( 製品番号 INTEGER NOT NULL, 製品名 CHAR(20)

NOT NULL, 在庫数量 INTEGER, 倉庫番号 SMALLINT NOT NULL ) ON DBSP1" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.在庫表¥ VALUES( 140, '演奏装置', 120, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_exec( $connection_id, "INSERT INTO STOCKS.在庫表¥ VALUES( 110, '表¥示装置', 85, 2 )" ) or

die( symfoware_errormsg( $connection_id ) ) ;

$result_id = symfoware_prepare( $connection_id, "SELECT * FROM STOCKS.在庫表¥" ) or

die( symfoware_errormsg( $connection_id ) ) ;

symfoware_execute( $result_id ) ;

while( symfoware_fetch_row( $result_id ) ) {

for( $x = 1 ; $x <= symfoware_num_fields( $result_id ) ; $x ++ ) {

if( $x != 1 ) printf( " " ) ;

printf( "%s", symfoware_result( $result_id, $x ) ) ;

}

printf( "¥n" ) ;

}

symfoware_close( $connection_id ) ;

?>

</PRE>

</BODY>

</HTML>

9.3.2 UTF-8UTF-8について説明します。

- 101 -

Page 110: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

UTF-8

“9.3.1 マルチバイト文字列の問題”で述べた問題を解決するために、UTF-8を用いることが考えられます。

PHPはUTF-8をサポートしています。よって、UTF-8を用いてPHPスクリプトを作成することが可能です。

PHPスクリプトをUTF-8で作成した場合、環境変数RDBCHARSET、RDBNCHARにUTF8を指定してください。環境変数

RDBCHARSET、RDBNCHARの詳細は、“RDBユーザーズガイド 応用プログラム開発編”の“環境変数”を参照してください。

UTF-8での動作は、ご自身の責任でお願いします。

9.3.3 マルチバイト対応関数

マルチバイト対応関数について説明します。

マルチバイト対応正規表現関数

“9.3.1 マルチバイト文字列の問題”の“正規表現の問題”で述べた問題を解決するために、PHP 4.2.0以降でmbregex関数が組み込ま

れています。

PHPのビルドオプションに“--enable-mbregex”を指定します。PHPのビルドオプションについては、“2.1.7 PHPのインストール”を参照し

てください。

マルチバイト正規表現関数の動作については、ご自身の責任でお願いします。

マルチバイト対応文字列関数

“9.3.1 マルチバイト文字列の問題”の“文字列長、部分文字列の問題”で述べた問題を解決するために、PHPにmbstring関数が組み

込まれています。

PHPのビルドオプションに“--enable-mbstring”を指定します。PHPのビルドオプションについては、“2.1.7 PHPのインストール”を参照し

てください。

マルチバイト対応文字列関数の動作については、ご自身の責任でお願いします。

9.3.4 シフトJIS対応PHPシフトSJIS対応PHPについて説明します。

シフトJIS対応PHP

“9.3.1 マルチバイト文字列の問題”の“シフトJIS文字列の0x5cの問題”で述べた問題を解決するために、日本の有志によってシフトJIS対応PHPを開発、公開しています。

シフトJIS対応PHPの動作については、ご自身の責任でお願いします。

- 102 -

Page 111: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

付録A connect、pconnectのパラメタの記述形式

connect、pconnectのパラメタの記述形式について説明します。

パラメタの記述形式

パラメタは、“CLI_”で始まる文字列です。複数のパラメタを指定する場合は、セミコロン“;”で区切って記述します。

パラメタの種類

パラメタには、以下のものがあります。

CLI_BUFFER_SIZE

CLI_CAL_ERROR

CLI_CHAR_SET

CLI_CHARACTER_TRANSLATE

CLI_COREFILE_PATH

CLI_DEFAULT_INDEX_SIZE

CLI_DEFAULT_OBJECT_TABLE_SIZE

CLI_DEFAULT_TABLE_SIZE

CLI_DSI_EXPAND_POINT

CLI_DSO_LOCK

CLI_INCLUSION_DSI

CLI_ISOLATION_WAIT

CLI_MAX_SQL (注1)

CLI_MSG_LANG

CLI_NCHAR_CODE

CLI_OPL_BUFFER_SIZE (注2)

CLI_PARALLEL_SCAN

CLI_R_LOCK

CLI_RCV_MODE

CLI_RESULT_BUFFER

CLI_ROUTINE_SNAP

CLI_SERVER_ENV_FILE

CLI_SORT_MEM_SIZE

CLI_STORAGE_AREA_AUTO_SET

CLI_SQL_LEVEL

CLI_SQL_SNAP

CLI_TRAN_SPEC

CLI_WAIT_TIME

CLI_WORK_ALLOC_SPACESIZE (注3)

CLI_WORK_PATH

注1) 現状、CLI_MAX_SQLに指定できるSQL文の数は2~255です。将来的に2~32000となる予定です。

注2) 現状、CLI_OPL_BUFFER_SIZEに指定できるバッファサイズは1~10240です。将来的に1~1280000となる予定です。

- 103 -

Page 112: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

注3) 現状、CLI_WORK_ALLOC_SPACESIZEに指定できる初期量は5000~50000、増分量は1000~100000です。将来的に5000~1000000、1000~1000000となる予定です。

パラメタの形式

パラメタの形式は、クライアント動作環境ファイルの仕様に準拠しています。connect、pconnectで指定できるオプションの先頭の“CLI_”を取り除いたものが、クライント用動作環境ファイルのパラメタに一致します。ただし、CLI_STORAGE_AREA_AUTO_SETは、“CLI_STORAGE_AREA_AUTO_SET”を参照してください。

クライアント用動作環境ファイルのパラメタの詳細は、“RDBユーザーズガイド 応用プログラム開発編”の“クライアント用の動作環境ファ

イルの作成”を参照してください。

CLI_STORAGE_AREA_AUTO_SET

説明

CLI_STORAGE_AREA_AUTO_SETは、格納領域指定を省略した表定義、インデックス定義に対し、格納領域指定を付加するか

否かを設定します。

CLI_STORAGE_AREA_AUTO_SETのデフォルトは、格納領域指定を付加します。

形式

CLI_STORAGE_AREA_AUTO_SET = ( YES | NO )

パラメタ

YES:

格納領域指定を省略した表定義、インデックス定義に対し、格納領域指定を付加します。

NO:

格納領域指定を省略した表定義、インデックス定義に対し、格納領域指定を付加しません。

- 104 -

Page 113: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

付録B PHP Symfowareの修正履歴

PHP Symfowareソースの修正履歴について説明します。

PHP Symfoware 1.0.0

PHP Symfowareの初版です。

- 105 -

Page 114: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

付録C PHP Symfowareのソースの構成

PHP Symfowareのソースの構成について説明します。

ご自身でPHP Symfowareをカスタマイズする場合の参考にしてください。カスタマイズ後のPHP Symfowareの動作については、ご自身

の責任でお願いします。

PHP Symfowareの開発経緯

PHP Symfowareは、PHPグループ(http://www.php.net/downloads.php)で公開されているソース(php-4.2.2.tar.gz)のODBCのソースを

流用し、ODBC(Open Database Connectivity)関数呼び出しをSymfoware/RDBのCLI(Call Level Interface)関数呼び出しに変更し、

Symfoware/RDBに 適なインタフェースとなるように一部の処理を修正しています。Symfoware/RDBのCLI関数の詳細は、富士通の

技術員に問合せ願います。

PHP Symfowareのソースの構成

PHP Symfowareをカスタマイズする場合、主に以下の3つのソースファイルを修正することになります。

php_symfoware.c

php_symfoware.cは、PHPから呼び出されるPHPモジュールのサブルーチン群で、C言語で記述されています。

db_symfoware.inc

db_symfoware.incは、PHPlibから呼び出されるプログラムで、PHPスクリプトで記述されています。

symfoware.php

symfoware.phpは、PEARから呼び出されるプログラムで、PHPスクリプトで記述されています。

- 106 -

Page 115: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

用語集

アーカイバ

複数のファイルをデータ圧縮してアーカイブファイルを作成したり、アーカイブファイルを展開しなおして複数のファイルに戻す機

能をもったソフトウェアです。

アーカイブ

アーカイバを用いて複数のファイルをデータ圧縮してアーカイブファイルにしたものです。

一時表

応用プログラムの利用者に対して専用に作成される表です。複数の利用者から、それぞれ同一の表名で利用することができま

す。応用プログラムで処理中のデータの一時的な退避など、他の応用プログラムから独立した利用ができる表です。

一時表名

一時表の名前です。

インストーラ

プログラムをマシンに入れるプログラムです。

インストール

プログラムをマシンに入れることです。

インタプリタ

実行時にプログラムテキストの内容を解析しながら処理を行う形態の言語処理ソフトウェアです。

オブジェクト

処理と処理に付随するデータを一つのまとまりとして管理する構造の実体です。

オブジェクト思考

処理と処理に付随するデータを一つのまとまりとして管理し、プログラムを構造化する考え方です。

概数型

おおよその数を表すデータ型であり、FLOAT、REAL、DOUBLE PRECISIONがあります。

外部プログラム

PHPスクリプトの処理から関数インタフェースやクラスインタフェースで呼び出すことができるプログラムです。

カーソル

データの操作において、操作の対象とする行を指示する指示子のことを“カーソル”と呼びます。カーソルはカーソル宣言で定義

します。そして、OPEN文でカーソル使用の開始を、FETCH文でカーソルの移動を、CLOSE文でカーソル使用の終了を行います。

カーソル名

カーソルの名前です。

各国語文字列型

各国語文字列を表すデータ型であり、NCHAR、NCHAR VARYINGがあります。

表の構成要素です。リレーショナルデータベースでは、データを行と列からなる二次元の表で表現します。

- 107 -

Page 116: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

クラスインタフェース

処理と処理に付随するデータを一つのまとまりとして管理しているものに対し、処理の呼び出しや処理に付随するデータを参照、

設定する方法を規定したものです。

警告の発行

軽微なエラーが発生したことを通知することです。

コミット

処理中のトランザクションのデータ操作の有効化をコミットと呼びます。トランザクションの中でのデータ操作が実際にデータベー

スに反映されます。コミットは、応用プログラムが意図的にCOMMIT文を発行することで制御します。

関連用語:ロールバック

関数インタフェース

処理を行う関数を呼び出す方法を規定したものです。

位取り

一部の真数型、概数型に指定するデータの小数部の長さです。

時間隔型

時間の間隔(たとえば、10年と10ヶ月間)を表すデータ型であり、INTERVAL YEAR、INTERVAL MONTH、INTERVAL DAY、

INTERVAL HOUR、INTERVAL MINUTE、INTERVAL SECOND、INTERVAL YEAR TO MONTH、INTERVAL DAY TOHOUR、INTERVAL DAY TO MINUTE、INTERVAL DAY TO SECOND、INTERVAL HOUR TO MINUTE、INTERVAL HOURTO SECOND、INTERVAL MINUTE TO SECONDがあります。

システム表

Symfoware/RDBの利用者が定義したデータベースやスキーマなどの定義情報を管理する表です。RDBディクショナリと呼ぶこと

もあります。

システム表名

システム表の名前です。

自動的にコミット

SQL文の実行後に自動的にコミットすることです。

シフトJIS

JISコードをもとに半角カナを1バイト、日本語を2バイトで表現した文字コード系です。

真数型

正確な数を表すデータ型であり、INTEGER、SMALLINT、NUMERIC、DECIMALがあります。

スキーマ

データベースを構成する要素です。Symfoware/RDBでは、情報分析システム分析技法AA/BRMODELLINGを利用してデータ

分析を行って、表またはビュー表を作成します。これらの表の集まりを“スキーマ”と定義します。

スキーマ名

スキーマの名前です。

ステートメントハンドル

SQL文を準備して獲得したオブジェクトです。

正規表現

文字列を照合するためのパターン文字列です。

- 108 -

Page 117: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

精度

一部の真数型、概数型に指定するデータの整数部と小数部を合わせた長さです。

探索条件

SQL文でデータベースの操作対象の行を特定するために指定する条件です。

データ型

SQLのデータ型であり、文字列型、各国語文字列型、真数型、概数型、日時型、時間隔型があります。

データソース名

接続するデータベースの情報をDBIに渡すための文字列であり、"dbi:ドライバ名:DBDに渡す文字列"です。

データベース(1)

大量のデータを効率的に格納、検索するソフトウェアです。

データベース(2)

RDBシステム内に配下に作成する論理的な構造で、配下にデータベーススペース、スキーマなどが定義されます。

データベースアクセスで影響を受けた行数

データベースに対する操作によって操作された行数です。

データベーススペース

実表やインデックスを格納する領域を“データベーススペース”と呼びます。データベーススペースの作成は、物理構造定義で行

います。

データベーススペース名

データベーススペースに対して付ける名前です。

データベースのアクセス

データベースに対する操作を行うことです。

データベースベンダ

データベースシステムを提供する会社または団体です。

データベース名

データベースは、1つのサーバシステム上に、管理・設計の単位としていくつも作成することができます。これらのデータベースを

認識するために、サーバシステム上で唯一無二の名前を付けます。これを“データベース名”と呼びます。

動的パラメタ

問合せ指定、INSERT文、UPDATE文:探索、DELETE文:探索に指定するクエスチョンマーク“?”です。

日時型

日、時間、日時を表すデータ型であり、DATE、TIME、TIMESTAMPがあります。

パッケージ

Sun OSでソフトウェアを提供する形態です。

ハンドル

獲得したオブジェクトを指す別称です。

ビュー表

スキーマ配下に作成する論理的な構造で、表の一部の列と対象の行を特定するための条件で構成されています。

- 109 -

Page 118: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

ビュー表名

ビュー表の名前です。

リレーショナルデータベースでは、データを行と列からなる二次元の表で表現しています。表には、実表とビュー表の2種類があり

ます。

表名

表に付けた名前です。表名は、スキーマ定義で設定します。そして、データ操作のSQL文で、操作の対象とする表を指定するた

めに使用します。

ビルド

ソースで提供されたPHPやPHPモジュールをコンパイルおよびリンクすることです。

フェッチ

データベースの内容を行ごとに読み込むことです。

不定、NULL

値が設定されていない状態を表します。

部分文字列

文字列から任意の範囲で一部の文字列を取り出したものです。

プロシジャルーチン

SQLによるデータベースの処理手続きの定義体をプロシジャルーチンと呼びます。

プロシジャルーチン名

プロシジャルーチンの名前です。

ホスト名

Symfoware/RDBリモートアクセスする場合において、マシン名からIPアドレスを解決できる場合はマシン名、マシン名からIPアドレ

スを解決できないならばIPアドレス(xxx.xxx.xxx.xxxの形式)です。

ポート番号

リモートのSymfoware/RDBに接続する場合において、サーバマシン側で設定したTCP/IP通信を受け付ける番号で、1025から65535までの数値です。

文字列型

文字列を表すデータ型であり、CHAR、CHAR VARYINGがあります。

表の構成要素です。リレーショナルデータベースでは、データを行と列からなる二次元の表で表現しています。

連想配列

複数の値を名前で対応付けて値を保持する変数です。

ログイン

Linuxのマシンの操作を開始することです。

ロールバック

処理中のトランザクションのデータ操作の無効化をロールバックと呼びます。ロールバックには、データ操作のSQL文単位のロー

ルバックと、トランザクション単位のロールバックの2つがあります。代表的なものでは、前者には、データ操作の例外状態の発生、

後者には、応用プログラムが意図したROLLBACK文の発行があります。

- 110 -

Page 119: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

関連用語:コミット

選択リスト

問合せ指定で指定する検索する列の並びです。

マウント

CDを読み込むことができるようCD-ROM装置を接続することです。

マルチバイト文字

複数バイトで1文字を表す文字で、EUC(Extended UNIX Code)、シフトJIS、UTF-8などがあります。

文字列長(1)

SQLにおいて、文字列型ではパイト数、各国語文字列型では文字数です。

文字列長(2)

PHPスクリプトにおいて、バイト数です。

BLOB型(BINARY LARGE OBJECT型)

大きいバイナリデータを表すデータ型です。

CLI(Call Level Interface)

Cプログラムから関数インタフェースでデータベースアクセスを行うインタフェースです。

DBクラス

データベースの接続を管理するクラスです。

DB_Errorクラス

データベースのエラー状態を保持するクラスです。

DB_Resultクラス

データベースの検索結果を管理するクラスです。

DB_Warningクラス

データベースの警告状態を保持するクラスです。

LGPL(Library GNU General Public License:ライブラリ一般公共利用承諾、または、Lesser GNU General PublicLicense:劣等一般公共利用承諾)

PHPのライブラリの公開について定めたもので、製品を使用する自由や製品に動作保証がないことなどが規定されています。

LIKE述語

SQL文の探索条件に指定し、文字列型、各国語文字列型の列と照合文字列との比較を行います。

NULL

表中の行について、ある列のデータの値が未定義である状態をNULLとよびます。

NULLを持つ可能性

データベースの列の値が不定になることがあることを表します。

PEAR(PHP Extension and Application Repository)

複数のデータベースベンダのデータベースアクセスを1つのクラスインタフェースで行うなど、有用なクラスを集めたライブラリです。

PHP(Hypertext Preprocessor)

インタプリタ型のプログラミング言語で、WWWサーバ上で動作し、動的なHTML文書を作成することができます。

- 111 -

Page 120: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

PHPlib(PHP Base Library)

セション機能、認証機能、パーミッション機能、ユーザ変数機能など、有用なクラスを集めたライブラリです。

PHP 3

PHP 4より一世代古いPHPです。

PHP 4

新のPHPの総称です。

PHP 4.2.2

新のPHPです。

PHP License

PHPに関する製品の公開について定めたもので、製品を使用する自由や製品に動作保証がないことなどが規定されています。

PHP Symfoware

Symfoware/RDB固有のデータベースアクセスの処理を行う機能です。

PHPスクリプト

PHPが処理するプログラムです。

PHPモジュール

PHPスクリプトから関数インタフェースやクラスインタフェースで呼び出す外部モジュールです。

RDBコマンド

Symfoware/RDBのシステム管理の操作を行うコマンドです。

SQLCODE

過去のSQLインタフェースで、データベースアクセスのエラーコードを表します。

SQLSTATE

データベースアクセスの状態を5バイトの文字で表し、正常な場合は"00000"です。

SQLMSG

データベースアクセスのエラーメッセージの文字列です。

SQL文

データベースをアクセスするための文です。

SQLデータ型番号

データベースで扱うことができるデータ型に対して一意な番号を付けたものです。

SQL文の準備

SQL文を繰り返し実行できるよう準備することです。

Symfoware

Symfowareは、高性能で高信頼なデータベースエンジンを持ち、インターネットビジネス時代のミッションクリティカルシステムおよ

び戦略的な情報活用の支援に適したデータベースシステムです。

Symfoware/RDB

Symfoware ServerとSymfoware Clientの総称です。

- 112 -

Page 121: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

Symfoware/RDBにリモートアクセス

データベースアクセスを依頼するマシンが他のマシンのSymfoware/RDBに接続することです。

Symfoware/RDBにローカルアクセス

データベースアクセスを依頼するマシンが同一のSymfoware/RDBに接続することです。

Symfoware Server

Symfoware/RDBのデータベースアクセスの依頼を受け付けるサーバソフトウェアです。

Symfoware Client

Symfoware/RDBのデータベースアクセスの依頼を行うクライアントソフトウェアです。

UNIXマシン

UNIXのOSがインストールされたマシンです。

UTF-8

世界の各国語文字を統一的に扱うことができるマルチバイトの文字コード系であるUnicodeの規格の一つです。

$

変数名の先頭の$は、値を保持することを表します。

&

変数名の先頭の&は、値そのものではなく値の領域を参照することを表します。

- 113 -

Page 122: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

索 引[A]

affected Rows...........................................................................76Apacheのインストール................................................................4Apacheのセットアップ...............................................................10autoCommit..............................................................................78

[C]Cacheクラス...............................................................................87CLI_STORAGE_AREA_AUTO_SET..................................104commit......................................................................................78connect......................................................................................59connect、pconnectのパラメタの記述形式..............................103createSequence.........................................................................77

[D]DB_Errorクラス.........................................................................86DB_Resultクラス.......................................................................80db_symfoware.inc...................................................................106DB_Warningクラス...................................................................87DBクラス...................................................................................58DBクラスのインクルード...........................................................58disconnect.................................................................................60dropSequence............................................................................77

[E]errorNative................................................................................79execute......................................................................................65executeMultiple........................................................................66execとは....................................................................................99execを用いたRDBコマンドの呼び出し....................................99execを用いたRDBコマンドの呼び出し例................................99

[F]fetchInto....................................................................................82fetchRow...................................................................................81free............................................................................................85

[G]getAll........................................................................................74getAssoc....................................................................................72getCol........................................................................................71getListOf...................................................................................77getMessage...............................................................................86getOne.......................................................................................68getRow......................................................................................70

[I]isError.......................................................................................61isWarning..................................................................................61

[L]limitQuery.................................................................................68

[N]nextId........................................................................................77nextResult.................................................................................85numCols....................................................................................84numRows..................................................................................84

[P]PEAR for Symfowareのインストール.........................................7PEAR for Symfowareの概要...................................................57PEAR for Symfowareの仕様...................................................57PEAR for Symfowareのスクリプト例........................................57PEARのセットアップ...................................................................7PEARの特徴............................................................................57PHP 4の新機能........................................................................88PHPlib for Symfowareのインストール........................................9PHPlib for Symfowareの概要..................................................88PHPlib for Symfowareの仕様..................................................88PHPlibで使用するファイル......................................................88PHPlibのインストール.................................................................8PHPlibの使用例.......................................................................90PHPlibのセットアップ..................................................................9PHPlibの選択...........................................................................88PHPlibの特徴...........................................................................88PHPlib読み込みPHPスクリプトファイル...................................90PHPlibローカル定義ファイル...................................................88PHP Symfoware 1.0.0............................................................105PHP Symfowareとは...................................................................1PHP SymfowareによるデータベースアクセスとRDBコマンドの

呼び出しの混在不可.............................................................100PHP Symfowareのインストール.................................................6PHP Symfowareの開発経緯..................................................106PHP Symfowareの概要..............................................................1PHP Symfowareの環境設定....................................................94PHP Symfowareの規約............................................................13PHP Symfowareの公開形態......................................................2PHP Symfowareの修正履歴..................................................105PHP Symfowareの使用............................................................12PHP Symfowareの仕様............................................................13PHP Symfowareの制限..........................................................100PHP Symfowareのソースの構成............................................106PHP Symfowareの動作環境の設定形式................................94PHP Symfowareの導入..............................................................3php_symfoware.c....................................................................106PHP環境php.ini........................................................................94PHPスクリプト、PHPモジュール、クラスインタフェース..............1PHPスクリプトの作成および実行.............................................12PHPスクリプトの実行者の考慮................................................98PHP動作環境ファイル.............................................................94PHPとは......................................................................................1PHPのインストール.....................................................................5PHPの公開形態.........................................................................1PHPのデータベースアクセス.....................................................1PHPのデータベースアクセスの抽象化.....................................1PHPの動作環境を表示するPHPスクリプトの作成および実行....12PHPのビルドで使用するコマンドのインストール.......................5PHPのライブラリ..........................................................................2popenとは..................................................................................99popenを用いたRDBコマンドの呼び出し.................................99prepare......................................................................................64provides....................................................................................62

- 114 -

Page 123: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

[Q]query.........................................................................................67quote.........................................................................................61

[R]RDBコマンドの呼び出し..........................................................98RDBコマンドの呼び出しとは...................................................98RDBコマンドの呼び出し方法..................................................98RDBコマンドの呼び出し例......................................................98RDBコマンド呼び出しの制限................................................100RDBコマンドを実行するマシン...............................................98RDBコマンドを実行するユーザ...............................................98require_once.............................................................................58rollback.....................................................................................79

[S]setFetchMode............................................................................63SQL文の規約...........................................................................14symfoware.allow_persistent.....................................................95symfoware.check_persistent.....................................................95symfoware.defaultbinmode......................................................97symfoware.defaultlrl.................................................................96symfoware.default_db..............................................................94symfoware.default_pw.............................................................95symfoware.default_user............................................................94symfoware.max_links...............................................................96symfoware.max_persistent.......................................................96symfoware.php.......................................................................106Symfoware/RDBにリモートアクセスする場合のSymfowareのイ

ンストール...................................................................................4symfoware_autocommit...........................................................17symfoware_binmode................................................................18symfoware_close......................................................................19symfoware_close_all................................................................20symfoware_columnprivileges...................................................20symfoware_columns.................................................................20symfoware_commit..................................................................23symfoware_connect..................................................................23symfoware_cursor....................................................................24symfoware_do..........................................................................25symfoware_error.......................................................................25symfoware_errormsg................................................................27symfoware_exec.......................................................................27symfoware_execute..................................................................28symfoware_fetch_array............................................................29symfoware_fetch_into..............................................................30symfoware_fetch_object...........................................................31symfoware_fetch_row..............................................................32symfoware_field_len................................................................34symfoware_field_name............................................................34symfoware_field_num..............................................................35symfoware_field_precision......................................................35symfoware_field_scale.............................................................36symfoware_field_type..............................................................36symfoware_foreignkeys............................................................37symfoware_free_result.............................................................37symfoware_gettypeinfo............................................................38symfoware_isnull......................................................................42

symfoware_longreadlen............................................................42symfoware_next_result.............................................................43symfoware_num_fields............................................................43symfoware_num_rows..............................................................44symfoware_pconnect................................................................45symfoware_prepare..................................................................46symfoware_primarykeys..........................................................47symfoware_procedurecolumns.................................................48symfoware_procedures.............................................................51symfoware_result......................................................................52symfoware_result_all................................................................53symfoware_rollback.................................................................53symfoware_setoption................................................................54symfoware_specialcolumns......................................................54symfoware_statistics.................................................................54symfoware_tableprivileges.......................................................54symfoware_tables.....................................................................54Symfoware関数........................................................................17Symfoware関数のインストール..................................................6Symfoware関数の概要............................................................16Symfoware関数の仕様............................................................16Symfoware関数のスクリプト例.................................................16Symfoware/RDBにローカルアクセスする場合のSymfowareのイ

ンストール...................................................................................4Symfowareのインストール..........................................................4systemとは................................................................................98systemを用いたRDBコマンドの呼び出し................................98systemを用いたRDBコマンドの呼び出し例............................98

[T]tableInfo....................................................................................77toString.....................................................................................87

[U]UTF-8.....................................................................................101

[あ]値式の制限............................................................................100アーカイバのインストール..........................................................4インストール済みパッケージ......................................................3インストール済みパッケージのアンインストール.......................3

[か]格納構造がOBJECTの場合の制限......................................100偽、FALSE...............................................................................14コンパイラのインストール............................................................4

[さ]自動コミットの動作.................................................................100シフトJIS対応PHP..................................................................102シフトJIS文字列の0x5cの問題..............................................101従来のデータベースのアクセス.................................................1使用できるSQL文.....................................................................14真、偽........................................................................................14真、TRUE.................................................................................14正規表現の問題....................................................................101セション機能の使用例.............................................................90

- 115 -

Page 124: Symfoware Server PHPドライバユーザーズガイド・Apache 1.3.26 ・PHP 4.2.2 ・PEAR(PHPに同梱) ・PHPlib 7.4-pre1 ・Symfoware関数 1.0.0 ・PEAR for Symfoware 1.0.0

[た]ダイジェスト認証機能の使用例...............................................92注意事項................................................................................100停止しないRDBコマンドの呼び出し不可.............................100動的パラメタの制限................................................................100導入方法....................................................................................3

[な]認証機能の使用例..................................................................91

[は]パラメタの記述形式................................................................103パラメタの形式........................................................................104パラメタの種類........................................................................103パラメタの詳細..........................................................................94パーミッション管理機能の使用例............................................92変数の規約..............................................................................13

[ま]マルチバイト対応関数...........................................................102マルチバイト対応正規表現関数...........................................102マルチバイト対応文字列関数...............................................102マルチバイト文字列の注意....................................................101マルチバイト文字列の問題....................................................101マルチバイト文字列の問題とは.............................................101文字列長、部分文字列の問題..............................................101文字列長の制限....................................................................100

[や]ユーザ変数機能の使用例.......................................................93

[ら]列名の取得の制限.................................................................100ログイン認証機能の使用例.....................................................91

- 116 -