core
db
html
utility
SqlAbstract::where
public SqlAbstract where
( string または array $where, mixed $param = null )
WHERE条件の指定を行います。
指定の仕方はいくつか存在します。
1,フィールド名と値の組み合わせで指定
$select->where('age', 30);
2,ハッシュで指定
$select->where(array('age' => 30));
3,WHERE条件文を直接指定
$select->where("age = 30");
SQLインジェクション対策のため、値は直接WHERE句中に含めるべきではありません。
値の指定はプレースホルダ化し、パラメーターとして別指定するのが望ましいです。
上記の3パターンのうち、1や2のような指定の仕方をした場合、内部で自動的にプレースホルダとして処理してくれますが、3のように直接条件文に値を記述するのは安全ではありません。この場合、以下のようにするべきです。
$select->where("age = :age");
$select->params(array('age' => 30));
whereメソッドを複数回実行した場合、各条件をAND結合します。
$select->where('age', 30);
$select->where('name', 'taro');
→WHERE (age = 30) AND (name = 'taro')
値にnullが指定された場合はデータベースの値としてもNULLで比較します。
$select->where('name', null);
→WHERE (name IS NULL)
指定の仕方はいくつか存在します。
1,フィールド名と値の組み合わせで指定
$select->where('age', 30);
2,ハッシュで指定
$select->where(array('age' => 30));
3,WHERE条件文を直接指定
$select->where("age = 30");
SQLインジェクション対策のため、値は直接WHERE句中に含めるべきではありません。
値の指定はプレースホルダ化し、パラメーターとして別指定するのが望ましいです。
上記の3パターンのうち、1や2のような指定の仕方をした場合、内部で自動的にプレースホルダとして処理してくれますが、3のように直接条件文に値を記述するのは安全ではありません。この場合、以下のようにするべきです。
$select->where("age = :age");
$select->params(array('age' => 30));
whereメソッドを複数回実行した場合、各条件をAND結合します。
$select->where('age', 30);
$select->where('name', 'taro');
→WHERE (age = 30) AND (name = 'taro')
値にnullが指定された場合はデータベースの値としてもNULLで比較します。
$select->where('name', null);
→WHERE (name IS NULL)
パラメーター
| 名前 | 型 | 内容 |
|---|---|---|
| $where | string または array | arrayの場合は列名と値の組み合わせの連想配列。この場合は第二引数の指定は不可です。 stringの場合は列名の指定、または条件文の直接指定。前者の場合は第二引数の指定が必要です。 |
| $param | mixed | 第一引数の指定がstringで列名指定の場合に、その列に対する値を指定します。 第一引数がarrayの場合に第二引数を指定すると例外を発生します。 |
返り値
自分自身のインスタンスを返します。