class Query

SQLの構築・実行を行う

TODO エラーハンドリング, ロギング方法を見直す

Properties

$option
$where
$arrWhereVal
$conn
$groupby
$order
$force_run
static $arrPoolInstance シングルトン動作のためのインスタンスプール配列。キーは DSN の識別情報。

Methods

__construct(string $dsn = '', boolean $force_run = false, boolean $new = false)

コンストラクタ.

static Query
getSingletonInstance(string $dsn = '', boolean $force_run = false, boolean $new = false)

シングルトンの Query インスタンスを取得する.

boolean
isError() deprecated

エラー判定を行う.

integer
count(string $table, string $where = '', array $arrWhereVal = array())

COUNT文を実行する.

boolean
exists(string $table, string $where = '', array $arrWhereVal = array())

EXISTS文を実行する.

array|null
select(string $cols, string $from = '', string $where = '', array $arrWhereVal = array(), integer $fetchmode = \MDB2_FETCHMODE_ASSOC)

SELECT文を実行する.

string
getLastQuery(boolean $disp = true)

直前に実行されたSQL文を取得する.

MDB2_OK
commit()

トランザクションをコミットする.

MDB2_OK
begin()

トランザクションを開始する.

MDB2_OK
rollback()

トランザクションをロールバックする.

boolean
inTransaction()

トランザクションが開始されているかチェックする.

exec($str, $arrVal = array())

更新系の SQL を実行する.

boolean
doCallbackAll($cbFunc, $sql, $arrVal = array(), $fetchmode = \MDB2_FETCHMODE_ASSOC)

クエリを実行し、結果行毎にコールバック関数を適用する

array
getAll(string $sql, array $arrVal = array(), integer $fetchmode = \MDB2_FETCHMODE_ASSOC)

クエリを実行し、全ての行を返す

string
getSql(string $cols, string $from = '', string $where = '', mixed $arrWhereVal = null)

構築した SELECT 文を取得する.

setOption(string $str)

SELECT 文の末尾に付与する SQL を設定する.

setLimitOffset(integer $limit, integer $offset)

SELECT 文に付与する LIMIT, OFFSET 句を設定する.

setGroupBy(string $str)

SELECT 文に付与する GROUP BY 句を設定する.

andWhere(string $str)

SELECT 文の WHERE 句に付与する AND 条件を設定する.

orWhere(string $str)

SELECT 文の WHERE 句に付与する OR 条件を設定する.

setWhere(string $where = '', mixed $arrWhereVal = array())

SELECT 文に付与する WHERE 句を設定する.

setOrder(string $str)

SELECT 文に付与する ORDER BY 句を設定する.

setLimit(integer $limit)

SELECT 文に付与する LIMIT 句を設定する.

setOffset(integer $offset)

SELECT 文に付与する OFFSET 句を設定する.

integer|DB_Error|boolean
insert(string $table, array $arrVal, array $arrSql = array(), array $arrSqlVal = array(), string $from = '', string $arrFromVal = array())

INSERT文を実行する.

update(string $table, array $arrVal, string $where = '', array $arrWhereVal = array(), array $arrRawSql = array(), array $arrRawSqlVal = array())

UPDATE文を実行する.

integer
max($col, $table, $where = '', $arrWhereVal = array())

MAX文を実行する.

integer
min($col, $table, $where = '', $arrWhereVal = array())

MIN文を実行する.

mixed
get($col, $table = '', $where = '', $arrWhereVal = array())

SQL を構築して, 特定のカラムの値を取得する.

mixed
getOne(string $sql, array $arrVal = array())

SQL を指定して, 特定のカラムの値を取得する.

array
getRow($col, $table = '', $where = '', $arrWhereVal = array(), $fetchmode = \MDB2_FETCHMODE_ASSOC)

一行をカラム名をキーとした連想配列として取得

array
getCol($col, $table = '', $where = '', $arrWhereVal = array())

SELECT 文の実行結果を 1列のみ取得する.

delete(string $table, string $where = '', array $arrWhereVal = array())

レコードの削除

nextVal($seq_name)

次のシーケンス値を取得する.

integer
currVal(string $seq_name)

現在のシーケンス値を取得する.

MDB2_OK
setVal(string $seq_name, integer $start)

シーケンス値を設定する.

array
query(string $n, array $arr = array(), boolean $ignore_err = false, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

SQL を実行する.

array
listSequences()

シーケンスの一覧を取得する.

array
listTables()

テーブル一覧を取得する.

array
listTableFields(string $table)

テーブルのカラム一覧を取得する.

array
listTableIndexes(string $table)

テーブルのインデックス一覧を取得する.

createIndex(string $table, string $name, array $definition)

テーブルにインデックスを付与する

dropIndex(string $table, string $name)

テーブルにインデックスを破棄する

array
getTableInfo(string $table)

テーブルの詳細情報を取得する。

string
quote(string $val)

値を適切にクォートする.

array
extractOnlyColsOf(string $table, array $arrParams)

パラメーターの連想配列から, テーブルに存在する列のみを取得する.

MDB2_Statement_Common
prepare(string $sql, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

プリペアドステートメントを構築する.

MDB2_Result
execute(MDB2_Statement_Common $sth, array $arrVal = array())

プリペアドクエリを実行する.

string
traceError(PEAR::Error $error, string $sql = '', array $arrVal = false)

エラーの内容をトレースする.

error($msg)

エラー処理

array
getQueryDefsFields(string $n, array $arr = array(), boolean $ignore_err = false, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

SQLクエリの結果セットのカラム名だけを取得する

static Query
setPoolInstance(Query $objThis, string $dsn = '')

インスタンスをプールする

static Query|null
getPoolInstance(string $dsn = '')

プールしているインスタンスを取得する

Details

at line 56
__construct(string $dsn = '', boolean $force_run = false, boolean $new = false)

コンストラクタ.

Parameters

string $dsn データソース名
boolean $force_run エラーが発生しても処理を続行する場合 true
boolean $new 新規に接続を行うかどうか

at line 106
static Query getSingletonInstance(string $dsn = '', boolean $force_run = false, boolean $new = false)

シングルトンの Query インスタンスを取得する.

Parameters

string $dsn データソース名
boolean $force_run エラーが発生しても処理を続行する場合 true
boolean $new 新規に接続を行うかどうか

Return Value

Query シングルトンの Query インスタンス

at line 128
boolean isError() deprecated

deprecated \PEAR::isError() を使用して下さい

エラー判定を行う.

Return Value

boolean

at line 145
integer count(string $table, string $where = '', array $arrWhereVal = array())

COUNT文を実行する.

Parameters

string $table テーブル名
string $where where句
array $arrWhereVal プレースホルダ

Return Value

integer 件数

at line 158
boolean exists(string $table, string $where = '', array $arrWhereVal = array())

EXISTS文を実行する.

Parameters

string $table テーブル名
string $where where句
array $arrWhereVal プレースホルダ

Return Value

boolean 有無

at line 177
array|null select(string $cols, string $from = '', string $where = '', array $arrWhereVal = array(), integer $fetchmode = \MDB2_FETCHMODE_ASSOC)

SELECT文を実行する.

Parameters

string $cols カラム名. 複数カラムの場合はカンマ区切りで書く
string $from テーブル名
string $where WHERE句
array $arrWhereVal プレースホルダ
integer $fetchmode 使用するフェッチモード。デフォルトは \MDB2FETCHMODEASSOC。

Return Value

array|null

at line 190
string getLastQuery(boolean $disp = true)

直前に実行されたSQL文を取得する.

Parameters

boolean $disp trueの場合、画面出力を行う.

Return Value

string SQL文

at line 206
MDB2_OK commit()

トランザクションをコミットする.

Return Value

MDB2_OK 成功した場合は \MDB2_OK; 失敗した場合は \PEAR::Error オブジェクト

at line 221
MDB2_OK begin()

トランザクションを開始する.

Return Value

MDB2_OK 成功した場合は \MDB2_OK; 失敗した場合は \PEAR::Error オブジェクト

at line 232
MDB2_OK rollback()

トランザクションをロールバックする.

Return Value

MDB2_OK 成功した場合は \MDB2_OK; 失敗した場合は \PEAR::Error オブジェクト

at line 246
boolean inTransaction()

トランザクションが開始されているかチェックする.

Return Value

boolean トランザクションが開始されている場合 true

at line 258
exec($str, $arrVal = array())

更新系の SQL を実行する.

この関数は Query::query() のエイリアスです.

FIXME \MDB2::exec() の実装であるべき

Parameters

$str
$arrVal

at line 272
boolean doCallbackAll($cbFunc, $sql, $arrVal = array(), $fetchmode = \MDB2_FETCHMODE_ASSOC)

クエリを実行し、結果行毎にコールバック関数を適用する

Parameters

$cbFunc
$sql
$arrVal
$fetchmode

Return Value

boolean 結果

at line 305
array getAll(string $sql, array $arrVal = array(), integer $fetchmode = \MDB2_FETCHMODE_ASSOC)

クエリを実行し、全ての行を返す

Parameters

string $sql SQL クエリ
array $arrVal プリペアドステートメントの実行時に使用される配列。配列の要素数は、クエリ内のプレースホルダの数と同じでなければなりません。
integer $fetchmode 使用するフェッチモード。デフォルトは DBFETCHMODEASSOC。

Return Value

array データを含む2次元配列。失敗した場合に 0 または DB_Error オブジェクトを返します。

at line 338
string getSql(string $cols, string $from = '', string $where = '', mixed $arrWhereVal = null)

構築した SELECT 文を取得する.

クラス変数から WHERE 句を組み立てる場合、$arrWhereVal を経由してプレースホルダもクラス変数のもので上書きする。

Parameters

string $cols SELECT 文に含めるカラム名
string $from SELECT 文に含めるテーブル名
string $where SELECT 文に含める WHERE 句
mixed $arrWhereVal プレースホルダ(参照)

Return Value

string 構築済みの SELECT 文

at line 375
Query setOption(string $str)

SELECT 文の末尾に付与する SQL を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $str 付与する SQL 文

Return Value

Query 自分自身のインスタンス

at line 391
Query setLimitOffset(integer $limit, integer $offset)

SELECT 文に付与する LIMIT, OFFSET 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

integer $limit LIMIT 句に付与する値
integer $offset OFFSET 句に付与する値

Return Value

Query 自分自身のインスタンス

at line 408
Query setGroupBy(string $str)

SELECT 文に付与する GROUP BY 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $str GROUP BY 句に付与する文字列

Return Value

Query 自分自身のインスタンス

at line 427
Query andWhere(string $str)

SELECT 文の WHERE 句に付与する AND 条件を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $str WHERE 句に付与する AND 条件の文字列

Return Value

Query 自分自身のインスタンス

at line 446
Query orWhere(string $str)

SELECT 文の WHERE 句に付与する OR 条件を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $str WHERE 句に付与する OR 条件の文字列

Return Value

Query 自分自身のインスタンス

at line 466
Query setWhere(string $where = '', mixed $arrWhereVal = array())

SELECT 文に付与する WHERE 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $where WHERE 句に付与する文字列
mixed $arrWhereVal プレースホルダ

Return Value

Query 自分自身のインスタンス

at line 482
Query setOrder(string $str)

SELECT 文に付与する ORDER BY 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

string $str ORDER BY 句に付与する文字列

Return Value

Query 自分自身のインスタンス

at line 501
Query setLimit(integer $limit)

SELECT 文に付与する LIMIT 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

integer $limit LIMIT 句に設定する値

Return Value

Query 自分自身のインスタンス

at line 518
Query setOffset(integer $offset)

SELECT 文に付与する OFFSET 句を設定する.

この関数で設定した値は Query::getSql() で使用されます.

Parameters

integer $offset OFFSET 句に設定する値

Return Value

Query 自分自身のインスタンス

at line 538
integer|DB_Error|boolean insert(string $table, array $arrVal, array $arrSql = array(), array $arrSqlVal = array(), string $from = '', string $arrFromVal = array())

INSERT文を実行する.

Parameters

string $table テーブル名
array $arrVal array('カラム名' => '値', ...)の連想配列
array $arrSql array('カラム名' => 'SQL文', ...)の連想配列
array $arrSqlVal SQL文の中で使用するプレースホルダ配列
string $from FROM 句・WHERE 句
string $arrFromVal FROM 句・WHERE 句で使用するプレースホルダ配列

Return Value

integer|DB_Error|boolean 挿入件数またはエラー(DB_Error, false)

at line 596
update(string $table, array $arrVal, string $where = '', array $arrWhereVal = array(), array $arrRawSql = array(), array $arrRawSqlVal = array())

UPDATE文を実行する.

Parameters

string $table テーブル名
array $arrVal array('カラム名' => '値', ...)の連想配列
string $where WHERE句
array $arrWhereVal WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた)
array $arrRawSql 追加カラム
array $arrRawSqlVal 追加カラム用のプレースホルダ配列

at line 652
integer max($col, $table, $where = '', $arrWhereVal = array())

MAX文を実行する.

Parameters

$col
$table
$where
$arrWhereVal

Return Value

integer MAX文の実行結果

at line 668
integer min($col, $table, $where = '', $arrWhereVal = array())

MIN文を実行する.

Parameters

$col
$table
$where
$arrWhereVal

Return Value

integer MIN文の実行結果

at line 684
mixed get($col, $table = '', $where = '', $arrWhereVal = array())

SQL を構築して, 特定のカラムの値を取得する.

Parameters

$col
$table
$where
$arrWhereVal

Return Value

mixed SQL の実行結果

at line 700
mixed getOne(string $sql, array $arrVal = array())

SQL を指定して, 特定のカラムの値を取得する.

Parameters

string $sql 実行する SQL
array $arrVal プレースホルダに挿入する値

Return Value

mixed SQL の実行結果

at line 733
array getRow($col, $table = '', $where = '', $arrWhereVal = array(), $fetchmode = \MDB2_FETCHMODE_ASSOC)

一行をカラム名をキーとした連想配列として取得

Parameters

$col
$table
$where
$arrWhereVal
$fetchmode

Return Value

array array('カラム名' => '値', ...)の連想配列

at line 766
array getCol($col, $table = '', $where = '', $arrWhereVal = array())

SELECT 文の実行結果を 1列のみ取得する.

Parameters

$col
$table
$where
$arrWhereVal

Return Value

array SQL の実行結果の配列

at line 798
delete(string $table, string $where = '', array $arrWhereVal = array())

レコードの削除

Parameters

string $table テーブル名
string $where WHERE句
array $arrWhereVal プレースホルダ

at line 816
nextVal($seq_name)

次のシーケンス値を取得する.

Parameters

$seq_name

at line 827
integer currVal(string $seq_name)

現在のシーケンス値を取得する.

Parameters

string $seq_name 取得するシーケンス名

Return Value

integer 現在のシーケンス値

at line 839
MDB2_OK setVal(string $seq_name, integer $start)

シーケンス値を設定する.

Parameters

string $seq_name シーケンス名
integer $start 設定するシーケンス値

Return Value

MDB2_OK

at line 869
array query(string $n, array $arr = array(), boolean $ignore_err = false, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

SQL を実行する.

FIXME $ignore_errが無視されるようになっているが互換性として問題が無いか確認が必要

Parameters

string $n 実行する SQL 文
array $arr プレースホルダに挿入する値
boolean $ignore_err \MDB2切替で無効化されている (エラーが発生しても処理を続行する場合 true)
mixed $types プレースホルダの型指定 デフォルトnull = string
mixed $result_types 返値の型指定またはDML実行(MDB2PREPAREMANIP)

Return Value

array SQL の実行結果の配列

at line 894
array listSequences()

シーケンスの一覧を取得する.

Return Value

array シーケンス名の配列

at line 906
array listTables()

テーブル一覧を取得する.

Return Value

array テーブル名の配列

at line 917
array listTableFields(string $table)

テーブルのカラム一覧を取得する.

Parameters

string $table テーブル名

Return Value

array 指定のテーブルのカラム名の配列

at line 930
array listTableIndexes(string $table)

テーブルのインデックス一覧を取得する.

Parameters

string $table テーブル名

Return Value

array 指定のテーブルのインデックス一覧

at line 945
createIndex(string $table, string $name, array $definition)

テーブルにインデックスを付与する

Parameters

string $table テーブル名
string $name インデックス名
array $definition フィールド名など 通常のフィールド指定時は、$definition=array('fields' => array('フィールド名' => array())); MySQLのtext型フィールドを指定する場合は $definition['length'] = 'text_field(NNN)' が必要

at line 959
dropIndex(string $table, string $name)

テーブルにインデックスを破棄する

Parameters

string $table テーブル名
string $name インデックス名

at line 972
array getTableInfo(string $table)

テーブルの詳細情報を取得する。

Parameters

string $table テーブル名

Return Value

array テーブル情報の配列

at line 990
string quote(string $val)

値を適切にクォートする.

TODO \MDB2 に対応するための暫定的な措置. プレースホルダが使用できない実装があるため. 本来であれば, \MDB2::prepare() を適切に使用するべき

Parameters

string $val クォートを行う文字列

Return Value

string クォートされた文字列

See also

\MDB2::quote()

at line 1002
array extractOnlyColsOf(string $table, array $arrParams)

パラメーターの連想配列から, テーブルに存在する列のみを取得する.

Parameters

string $table テーブル名
array $arrParams プレースホルダの連想配列

Return Value

array テーブルに存在する列のみ抽出した連想配列

at line 1024
MDB2_Statement_Common prepare(string $sql, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

プリペアドステートメントを構築する.

Parameters

string $sql プリペアドステートメントを構築する SQL
mixed $types プレースホルダの型指定 デフォルト null
mixed $result_types 返値の型指定またはDML実行(MDB2PREPAREMANIP)、nullは指定無し

Return Value

MDB2_Statement_Common プリペアドステートメントインスタンス

at line 1043
MDB2_Result execute(MDB2_Statement_Common $sth, array $arrVal = array())

プリペアドクエリを実行する.

Parameters

MDB2_Statement_Common $sth プリペアドステートメントインスタンス
array $arrVal プレースホルダに挿入する配列

Return Value

MDB2_Result 結果セットのインスタンス

at line 1079
string traceError(PEAR::Error $error, string $sql = '', array $arrVal = false)

エラーの内容をトレースする.

XXX trigger_error で処理する場合、1024文字以内に抑える必要がある。 XXX 重要な情報を先頭に置き、冗長になりすぎないように留意する。

Parameters

PEAR::Error $error \PEAR::Error インスタンス
string $sql エラーの発生した SQL 文
array $arrVal プレースホルダ

Return Value

string トレースしたエラー文字列

at line 1096
error($msg)

エラー処理

Parameters

$msg

at line 1116
array getQueryDefsFields(string $n, array $arr = array(), boolean $ignore_err = false, mixed $types = null, mixed $result_types = \MDB2_PREPARE_RESULT)

SQLクエリの結果セットのカラム名だけを取得する

Parameters

string $n 実行する SQL 文
array $arr プレースホルダに挿入する値
boolean $ignore_err エラーが発生しても処理を続行する場合 true
mixed $types プレースホルダの型指定 デフォルトnull = string
mixed $result_types 返値の型指定またはDML実行(MDB2PREPAREMANIP)

Return Value

array 実行結果の配列

at line 1215
static Query setPoolInstance(Query $objThis, string $dsn = '')

インスタンスをプールする

Parameters

Query $objThis プールするインスタンス
string $dsn データソース名

Return Value

Query プールしたインスタンス

at line 1228
static Query|null getPoolInstance(string $dsn = '')

プールしているインスタンスを取得する

Parameters

string $dsn データソース名

Return Value

Query|null