core
db
html
utility
SqlUpdate
クラス概要
SqlUpdateはSQLのUPDATE文構築の機能を提供します。
通常、SqlUpdateのインスタンスはModel::updateメソッドにより取得します。これにより、Modelに設定されているテーブルに対するUPDATE文構築オブジェクトとして機能することになります。
UPDATE文で更新する行の更新対象フィールドの値は、キーと値の組み合わせの連想配列を引数にvaluesメソッドによって設定します。更新対象レコードの条件指定はwhereメソッドにより設定し、executeメソッドにより、SQLを実行します。
executeメソッドの実行時にSQL文が構築されますが、その際、valuesによって設定された値はINSERT文中に直接記述されず、プレースホルダを利用して実行されます。そのため、SQLインジェクションに対して安全です。
SqlInsertの各メソッドはそのほとんどが自分自身のインスタンスを返します。そのため、メソッドチェーンを利用して柔軟なコーディングが可能です。
通常、SqlUpdateのインスタンスはModel::updateメソッドにより取得します。これにより、Modelに設定されているテーブルに対するUPDATE文構築オブジェクトとして機能することになります。
UPDATE文で更新する行の更新対象フィールドの値は、キーと値の組み合わせの連想配列を引数にvaluesメソッドによって設定します。更新対象レコードの条件指定はwhereメソッドにより設定し、executeメソッドにより、SQLを実行します。
executeメソッドの実行時にSQL文が構築されますが、その際、valuesによって設定された値はINSERT文中に直接記述されず、プレースホルダを利用して実行されます。そのため、SQLインジェクションに対して安全です。
SqlInsertの各メソッドはそのほとんどが自分自身のインスタンスを返します。そのため、メソッドチェーンを利用して柔軟なコーディングが可能です。
クラスファイル位置
curry/db/sql_update.php
フィールド
公開されるフィールドはありません。
メソッド
| メソッド名 | アクセス | 概要 |
|---|---|---|
| where | public |
更新対象のレコードの抽出条件を設定します。 whereメソッドはSqlSelect::whereメソッドと全く同様の指定方法です。 詳細はSqlSelect::whereを参照してください。 |
| orWhere | public |
更新対象のレコードの抽出条件をOR結合によって設定します。 orWhereメソッドはSqlSelect::orWhereメソッドと全く同様の指定方法です。 詳細はSqlSelect::orWhereを参照してください。 |
| values | public |
UPDATE文で更新するフィールドと値を指定します。 指定方法は2つあります。 一つはレコードの各フィールドの値を、フィールド名と値の組み合わせの連想配列で指定する方法。この場合、複数フィールドを一度に指定できます。 もう一つは第一引数にフィールド名、第二引数に値を指定する方法です。この場合、一度に一つのフィールドしか指定できませんが、複数回、メソッドを実行することで複数指定は可能です。 値にnullを設定したフィールドにはテーブルのフィールドに対してもnullをセットします。 連想配列のキーには、UPDATE対象のテーブルに存在しない列を含めないように注意してください。この場合、SQLエラーとなり、PDOExceptionが発生します。 |
| params | public | whereメソッドで条件文をプレースホルダを含めて直接記述した場合に、そのプレースホルダに対する値を連想配列で指定します。 |
| execute | public |
valuesメソッドによって設定された更新値とwhereメソッドによって設定された条件をもとにUPDATE文を構築し、実行します。 このメソッドではWHERE条件が設定されていない場合、例外が発生します。これは誤って全件更新されるのを防ぐ為です。敢えて全件更新したい場合はexecuteAllメソッドを使用してください。 |
| increment | public |
パラメーターで指定した数値フィールドの値を+1します。複数のフィールドの同時指定も可能です。 対象レコードは事前にwhereメソッドによって設定します。 このメソッド実行時はvaluesメソッドによって設定された値は無視されます。 |
| getSql | public | valuesメソッドによって設定された更新値とwhereメソッドによって設定された条件をもとにUPDATE文を構築し、返します。 |
| getParams | public | UPDATE文に対するパラメーターを取得します。 |
オーバーライドメソッド()
| メソッド名 | アクセス | 概要 |
|---|---|---|
| where | public |
更新対象のレコードの抽出条件を設定します。 whereメソッドはSqlSelect::whereメソッドと全く同様の指定方法です。 詳細はSqlSelect::whereを参照してください。 |
| orWhere | public |
更新対象のレコードの抽出条件をOR結合によって設定します。 orWhereメソッドはSqlSelect::orWhereメソッドと全く同様の指定方法です。 詳細はSqlSelect::orWhereを参照してください。 |
| params | public | whereメソッドで条件文をプレースホルダを含めて直接記述した場合に、そのプレースホルダに対する値を連想配列で指定します。 |
| execute | public |
valuesメソッドによって設定された更新値とwhereメソッドによって設定された条件をもとにUPDATE文を構築し、実行します。 このメソッドではWHERE条件が設定されていない場合、例外が発生します。これは誤って全件更新されるのを防ぐ為です。敢えて全件更新したい場合はexecuteAllメソッドを使用してください。 |
| getSql | public | valuesメソッドによって設定された更新値とwhereメソッドによって設定された条件をもとにUPDATE文を構築し、返します。 |
| getParams | public | UPDATE文に対するパラメーターを取得します。 |
継承メソッド()
| メソッド名 | アクセス | 概要 |
|---|---|---|
| __construct | public |
コンストラクタです。 |
| enablePreparing | public |
同一インスタンスで連続してSQLを実行した場合、1回目の実行時にプリペアを行ってステートメントを生成し、以降の実行は生成されたプリペアドステートメントを利用して実行しますが、 このメソッドではこのプリペアドステートメントを利用するかしないかを設定します。 誤解してはいけないのが、Curryでは基本的に全てのSQLの実行はプリペアしています。 このメソッドで行う設定は、最初の1回目のプリペアドステートメントを使い続けるか、 それとも都度再生成するかの違いです。 最利用する方が効率が良いので、通常は特に意識する必要はなく、初期値のままで構いません。 ※バージョン1.1.0以降 |
| clearConditions | public | whereやorder等、各メソッドで設定された条件を全てクリアします。 |
| getStatement | public | 直前に実行したSQLのプリペアドステートメントを取得します。 |
| whereNot | public |
否定のWHERE条件を指定します。 whereメソッドとの違いは、フィールド名と値の比較演算子が"="ではなく"<>"になるということです。 値がnullの場合は"IS NULL"ではなく"IS NOT NULL"になります。 $select->whereNot('age', 30); $select->whereNot('name', null); →WHERE (age <> 30) AND (name IS NOT NULL) |
| orWhereNot | public |
否定のWHERE条件指定をOR結合で設定します。 whereNotのOR版です。 $select->whereNot('age', 30); $select->orWhereNot('name', null); →WHERE (age <> 30) OR (name IS NOT NULL) orWhereメソッドと同様、最初の一つ目の条件指定時はwhereNotと違いはありません。 |
| whereLike | public |
LIKE演算子による曖昧条件の指定を行います。 このメソッドで値に"%"を含めるとあいまい条件検索が可能になります。 $select->where('age', 30); $select->whereLike('name', 'ta%'); →WHERE (age = 30) AND (name LIKE 'ta%') |
| orWhereLike | public |
LIKE演算子による曖昧条件をOR結合で指定します。 whereLikeメソッドのOR版です。 $select->where('age', 30); $select->orWhereLike('name', 'ta%'); →WHERE (age = 30) OR (name LIKE 'ta%') orWhereメソッドと同様、最初の一つ目の条件指定時はwhereLikeと違いはありません。 |
| whereNotLike | public |
LIKE演算子による否定の曖昧条件の指定を行います。 whereLikeの否定条件版です。 $select->where('age', 30); $select->whereNotLike('name', 'ta%'); →WHERE (age = 30) AND (name NOT LIKE 'ta%') |
| orWhereNotLike | public |
LIKE演算子による否定の曖昧条件をOR結合で指定します。 whereNoLikeのOR版です。 $select->where('age', 30); $select->orWhereNotLike('name', 'ta%'); →WHERE (age = 30) OR (name NOT LIKE 'ta%') orWhereメソッドと同様、最初の一つ目の条件指定時はwhereLikeと違いはありません。 |
| whereIn | public |
IN演算子による条件の指定を行います。 第二引数に複数の値を配列で指定することにより、すべての値のいずれかに合致する条件を指定することができます。 $ages = array(20, 21, 22, 23, 24, 25); $select->where('name', 'taro'); $select->whereIn('age', $ages); →WHERE (name = 'taro') AND (age IN (20, 21, 22, 23, 24, 25)) |
| orWhereIn | public |
IN演算子による条件をOR結合で指定します。 whereInのOR版です。 $ages = array(20, 21, 22, 23, 24, 25); $select->where('name', 'taro'); $select->orWhereIn('age', $ages); →WHERE (name = 'taro') OR (age IN (20, 21, 22, 23, 24, 25)) orWhereメソッドと同様、最初の一つ目の条件指定時はwhereInと違いはありません。 |
| whereNotIn | public |
IN演算子による否定の条件の指定を行います。 whereInの否定条件版です。 第二引数に複数の値を配列で指定することにより、すべての値のどれにも合致しない条件を指定することができます。 $ages = array(20, 21, 22, 23, 24, 25); $select->where('name', 'taro'); $select->whereNotIn('age', $ages); →WHERE (name = 'taro') AND (age NOT IN (20, 21, 22, 23, 24, 25)) |
| orWhereNotIn | public |
N演算子による否定の条件をOR結合で指定します。 whereNoInのOR版です。 $ages = array(20, 21, 22, 23, 24, 25); $select->where('name', 'taro'); $select->orWhereNotIn('age', $ages); →WHERE (name = 'taro') OR (age NOT IN (20, 21, 22, 23, 24, 25)) |
| whereGt | public |
大なりのWHERE条件を指定します。 フィールド名と値の比較演算子を">"とし、対象列が条件指定した値より大きい事を条件とする場合に使用します。 $select->where('name', 'taro'); $select->whereGt('age', 30); →WHERE (name = 'taro') AND (age > 30) ※バージョン1.2.0以降 |
| whereLt | public |
小なりのWHERE条件を指定します。 フィールド名と値の比較演算子を"<"とし、対象列が条件指定した値より小さい事を条件とする場合に使用します。 $select->where('name', 'taro'); $select->whereLt('age', 30); →WHERE (name = 'taro') AND (age < 30) ※バージョン1.2.0以降 |
| whereGe | public |
大なりイコールのWHERE条件を指定します。 フィールド名と値の比較演算子を">="とし、対象列が条件指定した値より大きい、または等しい事を条件とする場合に使用します。 $select->where('name', 'taro'); $select->whereGe('age', 30); →WHERE (name = 'taro') AND (age >= 30) ※バージョン1.2.0以降 |
| whereLe | public |
小なりイコールのWHERE条件を指定します。 フィールド名と値の比較演算子を"<="とし、対象列が条件指定した値より小さい、または等しい事を条する場合に使用します。 $select->where('name', 'taro'); $select->whereLe('age', 30); →WHERE (name = 'taro') AND (age <= 30) ※バージョン1.2.0以降 |
| orWhereGt | public |
大なりの条件指定をOR結合で指定します。 whereGtメソッドのOR版です。 $select->where('age', 30); $select->orWhereGt('name', 'taro'); →WHERE (age = 30) OR (name > 'taro') ※バージョン1.2.0以降 |
| orWhereLt | public |
小なりの条件指定をOR結合で指定します。 whereLtメソッドのOR版です。 $select->where('age', 30); $select->orWhereLt('name', 'taro'); →WHERE (age = 30) OR (name < 'taro') ※バージョン1.2.0以降 |
| orWhereGe | public |
大なりイコールの条件指定をOR結合で指定します。 whereGeメソッドのOR版です。 $select->where('age', 30); $select->orWhereGe('name', 'taro'); →WHERE (age = 30) OR (name >= 'taro') ※バージョン1.2.0以降 |
| orWhereLe | public |
小なりイコールの条件指定をOR結合で指定します。 whereLeメソッドのOR版です。 $select->where('age', 30); $select->orWhereLe('name', 'taro'); →WHERE (age = 30) OR (name <= 'taro') ※バージョン1.2.0以降 |
| whereBetween | public |
範囲指定のWHERE条件を設定します。 BETWEEN演算子を使用し、対象列が指定した2つの値の範囲内であることを条件とする場合に指定します。 $select->where('name', 'taro'); $select->whereBetween('age', 30, 40); →WHERE (name = 'taro') AND (age BETWEEN 30 AND 40) ※バージョン1.2.0以降 |
| whereNotBetween | public |
否定の範囲指定のWHERE条件を設定します。 BETWEEN演算子を使用し、対象列が指定した2つの値の範囲外であることを条件とする場合に指定します。 $select->where('name', 'taro'); $select->whereNotBetween('age', 30, 40); →WHERE (name = 'taro') AND (age NOT BETWEEN 30 AND 40) ※バージョン1.2.0以降 |
| orWhereBetween | public |
範囲指定のWHERE条件をOR結合で設定します。 whereBetweenのOR版です。 $select->where('name', 'taro'); $select->orWhereBetween('age', 30, 40); →WHERE (name = 'taro') OR (age BETWEEN 30 AND 40) ※バージョン1.2.0以降 |
| orWhereNotBetween | public |
否定の範囲指定のWHERE条件をOR結合で設定します。 whereNotBetweenのOR版です。 $select->where('name', 'taro'); $select->orWhereNotBetween('age', 30, 40); →WHERE (name = 'taro') OR (age NOT BETWEEN 30 AND 40) ※バージョン1.2.0以降 |