| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
導入 - 結果導入 - 結果 – クエリ結果からデータを取得する
Descriptionクエリの結果から行を取得するDB_result オブジェクトは、結果セットの行からデータを取得する関数を fetchRow() と fetchInto() の 2 種類提供します。 fetchRow() は、行のデータを返します。 fetchInto() は、指定した変数に行のデータを代入して DB_OK を返します。 これらのメソッドがコールされるたびに、結果ポインタが次の行に移動します。 結果セットの最後に到達した場合には NULL が返されます。 エラーが発生した場合には DB_Error が返されます。 結果セットの取得
<?php
取得した行の形式クエリ結果の行から取得されるデータの構造は、 数値添字の配列 (カラム番号をキーとする)・ 連想配列 (カラム名をキーとする)・ オブジェクト (カラム名をプロパティとする) の 3 種類のうちのいずれかとなります。 DB_FETCHMODE_ORDERED (デフォルト)
DB_FETCHMODE_ASSOC
DB_FETCHMODE_OBJECT
注意: 同名のカラムがクエリ内に複数含まれており (例えば、同名のカラムを持つ複数のテーブルを連結した場合など)、 かつフェッチモードが DB_FETCHMODE_ASSOC あるいは DB_FETCHMODE_OBJECT の場合、その名前が最後に 現れたカラムのデータが返されます。この問題を回避するための 方法は、2 種類あります。
豆知識: このような問題に遭遇する場合は、たいていデータベーススキーマの 設計に問題があります。データが不必要に重複していたり、 違う種類のデータに同じ名前をつけているなどが考えられます。 形式を設定するフェッチメソッドをコールするたびに毎回フェッチモードを設定することも できますし、 setFetchMode() メソッドを使用して DB インスタンス全体に適用されるデフォルトのフェッチモードを 設定することもできます。 フェッチモードを毎回設定する
<?php
デフォルトのフェッチモードを変更する
<?php
数字で行を取得するPEAR DB のフェッチシステムは、ステートメントで追加のパラメータを 指定することもサポートしています。 このため、結果から番号により行を取得することが可能です。 これは、 (例えば、ページングを行う HTML リストを作成する場合のように) 結果全体の部分集合の表示のみを行いたい場合や、 特別な順番でレコードを取得する場合等に特に便利です。 数字で取得する
<?php
結果セット全体を取得するDB_common オブジェクトでは、データの取得を簡単に行うための メソッドをいくつか提供しています。これは、指定したクエリ文字列を 実行し、返された情報を PHP のデータ形式に取得し、取得結果を開放する という手順を組み合わせて実行するもので、 getOne()、 getRow()、 getCol()、 getAssoc() および getAll() が該当します。 結果セットを解放する結果セットを使用し終えた後、もしスクリプトをもうしばらく実行させる のであれば、メモリを節約するために結果セットを開放することを 推奨します。これを行うには free() を使用します。 開放する
<?php
クエリ結果から更に情報を取得するDB には、クエリの結果セット自身についての有用な情報を 取得するための方法が 4 種類あります。 numRows() は、 SELECT クエリの結果に含まれる行の数を返します。
<?php
numCols() は、 SELECT クエリの結果に含まれるカラムの数を返します。
<?php
affectedRows() は、データを変更するクエリ (INSERT、 UPDATE あるいは DELETE) により変更された行の数を返します。
<?php
tableInfo() は、 SELECT クエリの結果のカラムに関する情報を 連想配列で返します。
<?php
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「導入 - 結果」をGoogle検索
|