$_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(失敗