$_config
$_config : array
Class config
クエリークラス
select, insert, update, deleteのクエリーツールです。 selectにはHTMLリンクも伴うDBページング機能、他の文にはSQL生成の機能が付加されています。 MDB2を使用していますが、クライアントはMDB2の実装に依存しないでBEAR_Queryのインターフェイスに依存できます。
Example 1. セレクトクエリー
$config = array('db'=>$db, 'table'=>$table, 'pager'=>false, 'pager_option'=> $pagerOption);
$query = BEAR_Dependency('BEAR_Query, $config);
// 直接select
$sql = "SELECT FROM users WHERE id = 1";
$result = $query->select($sql);
// プリペアードステートメント (quote自動)
$sql = "SELECT FROM users WHERE id = :id";
$params = array('id'=>1);
$result = $query->select($sql, $params);
// insert
$values = array('name'=>'bear', 'age'=>10);
$result = $query->insert($values);
// update
$values = array('name'=>'bear', 'age'=>10);
$where = 'id = '. $query->quote($id, 'integer');
$result = $query->$update($values, $where);
// テーブル指定update
$table = 'another_user';
$result = $query->$update($values, $where, $table);
MDB2結果コード ('MDB2_OK', true); ('MDB2_ERROR', -1); ('MDB2_ERROR_SYNTAX', -2); ('MDB2_ERROR_CONSTRAINT', -3); ('MDB2_ERROR_NOT_FOUND', -4); ('MDB2_ERROR_ALREADY_EXISTS', -5); ('MDB2_ERROR_UNSUPPORTED', -6); ('MDB2_ERROR_MISMATCH', -7); ('MDB2_ERROR_INVALID', -8); ('MDB2_ERROR_NOT_CAPABLE', -9); ('MDB2_ERROR_TRUNCATED', -10); ('MDB2_ERROR_INVALID_NUMBER', -11); ('MDB2_ERROR_INVALID_DATE', -12); ('MDB2_ERROR_DIVZERO', -13); ('MDB2_ERROR_NODBSELECTED', -14); ('MDB2_ERROR_CANNOT_CREATE', -15); ('MDB2_ERROR_CANNOT_DELETE', -16); ('MDB2_ERROR_CANNOT_DROP', -17); ('MDB2_ERROR_NOSUCHTABLE', -18); ('MDB2_ERROR_NOSUCHFIELD', -19); ('MDB2_ERROR_NEED_MORE_DATA', -20); ('MDB2_ERROR_NOT_LOCKED', -21); ('MDB2_ERROR_VALUE_COUNT_ON_ROW', -22); ('MDB2_ERROR_INVALID_DSN', -23); ('MDB2_ERROR_CONNECT_FAILED', -24); ('MDB2_ERROR_EXTENSION_NOT_FOUND',-25); ('MDB2_ERROR_NOSUCHDB', -26); ('MDB2_ERROR_ACCESS_VIOLATION', -27); ('MDB2_ERROR_CANNOT_REPLACE', -28); ('MDB2_ERROR_CONSTRAINT_NOT_NULL',-29); ('MDB2_ERROR_DEADLOCK', -30); ('MDB2_ERROR_CANNOT_ALTER', -31); ('MDB2_ERROR_MANAGER', -32); ('MDB2_ERROR_MANAGER_PARSE', -33); ('MDB2_ERROR_LOADMODULE', -34); ('MDB2_ERROR_INSUFFICIENT_DATA', -35); DATAタイプ 'text': 'clob': 'blob': 'integer': 'boolean': 'date': 'time': 'timestamp': 'float': 'decimal':
select(string $query, array $params = array(), array $values = null, string $id = 'id') : \BEAR_Ro
セレクト
通常のselect文の他にDB結果の一部だけをSELECTする機能と、HTMLページングの機能が合わさった メソッドです。getAll()メソッドの引数に加えて一画面に表示するデータ数を 引数に指示するとページング(スライス)されたデータ結果と エージェントに合わせたリンクHTML文字列が返ります。 $valuesが配列$values)>ならWHERE $key1 = $id1 AND $key2 = $id2 ..と条件を作ってselectします。 リソース内で受け取った$valuesを条件にSELETするときに使います。 $paramsが空だと通常のSQL、連想配列が入っていると$queryをpreparedステートメート文として期待して実行します。
string | $query | SQL |
array | $params | プリペアードステートメントにする場合にバインドする変数 |
array | $values | where条件配列 |
string | $id |
_exception(string $msg, array $config = array()) : \BEAR_Exception
例外の作成
string | $msg | 例外メッセージ |
array | $config | 例外config |
_selectRow( $db, string $query, array $params, array $values, mixed $id) : mixed
Rowセレクト
$values配列に$idをキーにした変数があれば(単数、複数)それを=の条件としてwhereを作成してクエリーをRow取得する
example. $values = array('id'=>5) $id = 'id'; だと"WHERE id = '5'"のクエリーが生成される $values = array('id'=>5, 'delete_flg'=>1) $id = array('id', 'delete_flg'); だと"WHERE id = '5' AND delete_flg = '1'"のクエリーが生成されるParameters
$db | ||
string | $query | |
array | $params | |
array | $values | |
mixed | $id |
_rewriteCountQuery(string $query) : string
カウントクエリーを生成する
SQL文から"SELECT COUNT(*)" を付加したカウントクエリーを生成して返します。 COUNT文を含まないSQLからセレクト結果の個数を知るためCOUNTのクエリーを使用するのに用います DBページャーで内部的にも使用されています。 Example 1. SQLからCOUNT()を取得
$count_query = $this->getCountSQL($query));
$total_items = $this->getOne($count_query, $params);
string | $query | クエリー |
書き換えられたクエリー | false(失敗