DB_common::limitQuery()
DB_common::limitQuery() -- データベースに LIMIT クエリを送信する
概要
mixed &limitQuery (string $query, integer $from, integer $count [, mixed $params = array()])
説明
SQL クエリを実行しますが、指定した行数のみしか取得しません。
MySQL の LIMIT オプションの挙動をエミュレートしたものです。
パラメータ
- string
$query
SQL クエリ。
- integer
$from
取得を開始する行。
最初の行が 0、2 番目の行が 1、といったようになることに
注意しましょう。
- integer
$count
取得する行数。
- mixed
$params
プリペアドステートメントに適用する配列・文字列あるいは数値のデータ。
渡す項目数は、文中のプレースホルダの数と一致していなければなりません。
プレースホルダがひとつだけの場合は配列でない値を指定し、
複数存在する場合は個々の値を要素にもつ配列を指定します。
返り値
mixed - 結果を返すクエリ (例えば SELECT
クエリなど) の場合は新しい DB_result オブジェクト、
データを操作するクエリ (例えば INSERT クエリなど)
の場合は DB_OK、
あるいは失敗した場合には DB_Error オブジェクトを返します。
例外・エラー
表 33-1PEAR_Error の値
| エラーコード | エラーメッセージ | 原因 | 対応法 |
|---|
| DB_ERROR_NODBSELECTED |
no database selected
|
データベースが選択されていません。
|
connect() の際の
DSN
を調べます。
|
| その他のエラーコード | |
データベース固有のエラー。
|
PHP マニュアル
のデータベース関連の部分を調べ、エラーの原因を判断してください。
たいていの場合は SQL 文が間違っていることが原因です。例えば
Oracle データベースに対して SQL で LIMIT を使用しているなどが
考えられます。
|
注意
この関数は、スタティックにコールする
ことはできません。
データベースの種類によっては、
query() に比べてそれほど速度が速くならないことも
あります。limitQuery() の利点は、結果セット内の不要な行を
できるだけ早いうちに削除しておけるという点にあります。これにより、メモリの
消費量を減らすことができます。
例
例 33-1limitQuery() の使用法
<?php
// $db という名前の DB オブジェクトを取得しているとします...
$res =& $db->limitQuery('SELECT * FROM foo', 49, 10);
if (PEAR::isError($res)) {
die($res->getMessage());
}
?>
|
|