DB_common::getRow()
DB_common::getRow() – クエリを実行し、最初の行を返す
Synopsis
array &getRow (
string $query
,
array $params = array()
,
integer $fetchmode =
= DB_FETCHMODE_DEFAULT
)
Description
指定したクエリを実行し、結果の最初の行を配列に格納したあとで
結果セットを開放します。
Parameter
-
string
$query
-
SQL クエリあるいはプリペアドステートメント。
-
array
$params
-
プリペアドステートメントの実行時に使用される配列。
配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
指定された場合は、
prepare()/
execute() が使用されます。
このメソッドでは、この引数にスカラー値を指定することはできません。
-
integer
$fetchmode
-
使用するフェッチモード。
デフォルトは DB_FETCHMODE_DEFAULT で、
これは DB の現在のフェッチモードを使用します。
DB の現在のデフォルトフェッチモードを変更するには
setFetchMode() を使用します。
フェッチモードには、以下の値が指定できます。
-
DB_FETCHMODE_ORDERED
-
DB_FETCHMODE_ASSOC
-
DB_FETCHMODE_OBJECT
Return value
array - 最初の行のデータを含む配列、あるいは失敗した場合に
DB_Error オブジェクトを返します。この配列が
通常の数値添字配列であるか連想配列であるかについては、
$fetchmode
に依存します。数値添字の場合、
添字は 0 から始まります。
Throws
Possible PEAR_Error values
エラーコード |
エラーメッセージ |
原因 |
対応法 |
DB_ERROR_INVALID |
invalid
|
準備された SQL 文が無効です。
|
プレースホルダを使用する SQL 文を用いる場合は
prepare() のドキュメント
を参照ください。
|
DB_ERROR_MISMATCH |
mismatch
|
パラメータの数が、プリペアドステートメント中の
プレースホルダの数と一致しません。
|
$query
に渡した
prepare() 済みの文中の
プレースホルダの数が、$params
で渡した項目の数と一致するかどうかを調べます。
|
DB_ERROR_NODBSELECTED |
no database selected
|
データベースが選択されていません。
|
connect() の際の
DSN
を調べます。
|
その他のエラーコード |
|
データベース固有のエラー。
|
PHP マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
たいていの場合は SQL 文が間違っていることが原因です。例えば
Oracle データベースに対して SQL で LIMIT を使用しているなどが
考えられます。
|
Note
This function can not be called
statically.
Example
$fetchmode
=
DB_FETCHMODE_ORDERED の場合の
getRow() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getRow('SELECT cf, df FROM foo',
array(), DB_FETCHMODE_ORDERED);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[0] => Juan
[1] => 1991-01-11 21:31:41
)
$fetchmode
=
DB_FETCHMODE_ASSOC の場合の
getRow() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getRow('SELECT cf, df FROM foo',
array(), DB_FETCHMODE_ASSOC);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
Array
(
[cf] => Juan
[df] => 1991-01-11 21:31:41
)
$fetchmode
=
DB_FETCHMODE_OBJECT の場合の
getRow() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getRow('SELECT cf, df FROM foo',
array(), DB_FETCHMODE_OBJECT);
if (PEAR::isError($data)) {
die($data->getMessage());
}
print_r($data);
?>
出力は、以下のようになります。
stdClass Object
(
[cf] => Juan
[df] => 1991-01-11 21:31:41
)
プレースホルダがひとつの場合の
getRow() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getRow('SELECT cf, df FROM foo WHERE nf = ?',
array(5));
if (PEAR::isError($data)) {
die($data->getMessage());
}
?>
プレースホルダがふたつの場合の
getRow() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$data =& $db->getRow('SELECT cf, df FROM foo WHERE nf IN (?, ?)',
array(5, 10));
if (PEAR::isError($data)) {
die($data->getMessage());
}
?>