とりあえず基礎クラスを作っとこう. | |
・ | まずPostgreSQL(以下DB)を扱うための基本的なクラスを作成しとこう. |
大まかな考え方の順序 | |
・ | ということでDBを扱うために最低必要だと思われる処理のみをクラスに組み込むことを考えます. |
DB実行の最も単純な工程は以下のように思われます. | |
|
|
そこで基本クラスでは上記3工程のみを組み込むことにします. ・ ・ ・ 出来上がったソースです. きちんとした説明を書こうと思ったけどいきなり挫折しました^^; 現段階ではスクリプトを動かしていませんので実行できるかどうかは保障できません. 最終的にアプリケーションが出来上がった時点でのソースが正しいものになるはずです. |
利用した関数 | ||
・ | pg_connect($s) | 引数には"host","port","dbname","user","password"を指定した文字列をしていします."port"はサボりました. 戻り値は接続ID($this->connection)です. |
・ | pg_close($this -> connection) | コネクションをクローズします. |
・ | pg_query($this -> connection, $str_query) | クエリ($str_query)を実行します. 戻り値は結果ID($this->queryresult)です. ※PHP4.2.0より前では”pg_exec()”という関数名でした. |
・ | pg_num_rows($this -> queryresult) | 引数で与えられたクエリ結果のレコード数を返します. ※PHP4.2.0より前では”pg_numrows()”という関数名でした. |
・ | pg_num_fields($this -> queryresult) | 引数で与えられたクエリ結果のフィールド数を返します. ※PHP4.2.0より前では”pg_numfields()”という関数名でした. |
・ | pg_free_result($this -> queryresult) | 引数で与えられたクエリ結果で使用したメモリの開放をします. ※PHP4.2.0より前では”pg_freeresult()”という関数名でした. |
・ | pg_result_error($this->connection) | クエリのエラーメッセージを返すらしいです. |
作成した変数 | ||
・ | $dbhost = "localhost" | DB接続に利用するホスト名 |
・ | $dbname | DB接続に利用するデータベース名 |
・ | $dbuser | DB接続に利用するユーザ名 |
・ | $dbpassword = "" | DB接続に利用するパスワード |
・ | $connection | 接続したデータベースの接続IDを保持するための変数 |
・ | $queryresult | 実行したクエリの結果IDを保持するための変数 |
・ | $errormessage | 求められた処理がエラーになった場合のエラーメッセージを入れる変数 |
・ | $rowcount | 実行したクエリのレコード数を入れる変数 |
・ | $colcount | 実行したクエリのフィールド数を入れる変数 |
作成した関数 | ||
・ | init() | 変数を初期化するための関数. 変数の初期化は複数の関数で行うため関数としてまとめます. |
・ | pgsql_base( $_dbname = "",$_dbuser = "") | コンストラクタ. 最低限データベース名とユーザ名は必要だろうということで引数として設定. ただし,パスワードなどを必要とするデータベースも多そうなのでここでは接続までは行わないことにしました. |
・ | connect() | DBへの接続を行うための関数. 保持するデータから接続文字列を作成し接続を試みる. 既に接続されている場合は接続を終了させて再接続をします. |
・ | close() | DBの接続を終了するための関数. DBに接続されている場合はコネクションをクローズします. 変数の初期化も行います. |
・ | execute($str_query) | クエリの実行を行います. 引数として与えられたSQLを実行します. レコード数,フィールド数はよく参照される値だと思われるので変数として保持することにしました($rowcount,$colcount).クエリの実行に成功したときはレコード数とフィールド数をそれぞれ変数に代入します. ここで利用するPostgreSQL関数はPHP4.2.0以降で関数名が変更になったものが使われています.古いバージョンのものについてもコメントとして残してありますのでご利用のバージョンに合わせて利用してください. |