導入 - 取得

導入 - 取得 -- クエリからの行の取得

説明

取得用の関数

結果リソースからデータを取得するには、次の fetchInto() fetchOne() fetchRow() fetchCol() および fetchAll() のいずれかのメソッドを使用します。 これらのメソッドのうち、fetchOne() 以外はすべてデータを (多次元の) 配列に格納します。 データがもうない場合には NULL、エラーが発生した場合には MDB_Error を返します。 fetch() で始まるすべてのメソッドは、結果セットを自動的に開放します。

取得した行の形式の選択

以下の取得モードがサポートされています。

取得した行の形式の設定

取得モードは、コールの際に設定することもできますし、 MDB インスタンスの作成時に指定することもできます。

行番号の指定による行の取得

PEAR MDB では、取得ステートメントに対して追加のパラメータを指定することができます。 これを用いると、行番号を指定して行を取得することができるようになります。 これは、結果全体の一部のみを表示したい場合 (ページ処理をした HTML のリストなど) や、取得した行を特別な順番で表示したい場合などに便利です。

結果セットの開放

処理が終わったら、結果セットの後始末をしておくことを推奨します。 これにより、メモリが節約できます。後始末には freeResult() を使用します。

手っ取り早いデータ取得

MDB では、クエリからの情報を簡単に取得するための特別な方法を提供しています。 これを使用すると、 fetch*() の結果をループさせる必要がなくなります。

queryOne() は、クエリの最初のカラムの最初の結果を取得します。
$numrows = $db->queryOne('select count(id) from clients');

queryRow() は、最初の行を配列で返します。
$sql = 'select name, address, phone from clients where id=1';
if (is_array($row = $db->queryRow($sql))) {
    list($name, $address, $phone) = $row;
}

queryCol() は、選択したカラムのデータを配列で返します。 取得したいカラムの番号を二番目のパラメータで指定できます。
$all_client_names = $db->queryCol('SELECT name FROM clients');
上の文は、例えばこのような結果を返します。
$all_client_names = array('Stig', 'Jon', 'Colin');

getAll() は、クエリから返されたすべての行を取得します。 このメソッドでは追加のパラメータを指定することができ、 対処のカラムをキーとする連想配列で結果を返すこともできます。
$data = getAll('SELECT id, text, date FROM mytable');
/*
返り値はこのようになります。
array(
   1 => array('4', 'four', '2004'),
   2 => array('5', 'five', '2005'),
   3 => array('6', 'six', '2006')
)
*/

query*() 系のメソッドは、 裏方の作業をすべて肩代わりしてくれます。 たとえばクエリの実行、データの取得、結果の開放などです。 PEAR MDB の関数は、エラー時に MDB_Error オブジェクトを返すことを覚えておきましょう。

クエリ結果からのより詳細な情報の取得

MDB を使用すると、クエリ結果から以下のようなさまざまな情報を取得することができます。

処理の結果が MDB_Error オブジェクトになっていないかどうかを常に確認するようにしましょう。 "MDB_Error: database not capable" のようなエラーメッセージが返された場合は、 使用中のバックエンドではその操作がサポートされていません。