Curry
PHP Framework

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)

パラメーター

名前 内容
$where string または array arrayの場合は列名と値の組み合わせの連想配列。この場合は第二引数の指定は不可です。
stringの場合は列名の指定、または条件文の直接指定。前者の場合は第二引数の指定が必要です。
$param mixed 第一引数の指定がstringで列名指定の場合に、その列に対する値を指定します。
第一引数がarrayの場合に第二引数を指定すると例外を発生します。

返り値

自分自身のインスタンスを返します。