ThinkPHP 5.0クエリ条件where()使用
44881 ワード
記事の目次 where()指定条件 文字列条件 文字列条件を用いて直接検索動作 文字列条件+前処理機構を使用して を使用する.配列条件(tp公式推奨) 普通クエリー 式クエリ 表現の意味 条件判定クエリー あいまい検索 [not]betweenクエリ [not]inクエリー クイッククエリ 異なるフィールドの同じ条件のクエリー 区間クエリ 同じフィールドで、異なる条件クエリー マルチ呼び出し where()指定条件チェーン操作中間方法で、データベース操作条件を指定します.最も一般的な方法 パラメータ伝達方式(idを10に設定する条件) 方式1、パラメータ、文字列条件直接クエリー 方式2において、フィールド名はキーの関連配列 である.方式3、2つのパラメータ、1つ目はフィールド名、2番目はフィールド値 です.方式4、3つのパラメータ、1番目はフィールド名、2番目は条件、3番目のパラメータは値 である.
は影響行数 を返します.
文字列の条件を使って直接に検索します.
一般クエリードルmap[フィールド1]=array(「表式」、「クエリー条件1」) ドルmap[フィールド2]=array(「表式」、「照会条件2」) db(‘table’)->where($map)->select(); 式の意味
表式には大文字と小文字の区別なく、サポートされているクエリー表式には以下のような種類があります.
表式
意味
EQ
イコール(=)
NEQ
等しくない(<>)
GT
大きい(>)
EGT
以上(>=)
LT
小さい(
ELT
小なりイコール(=)
LIKE
あいまい検索
[NOT]BETWEEN
(不在)区間照会
[NOT]IN
(不在)INクエリ
条件判定クエリ
例1:クエリー
例2:クエリー
異なるフィールドと同じ条件のクエリー
同じフィールド、異なる条件のクエリー
例1 where()方法は、 を複数回呼び出すことができます.
where(array('id'=>array('eq',10)))
where('id',10)
where('id','eq',10)
namespace app\index\controller;
use \think\Controller;
use \think\Db;
class Index extends Controller{
public function index(){
$data = array('name'=>'xiao1','create_time'=>time());
$rel = db('data')->where(array('id'=>array('eq',10)))->update($data);// 1
$rel = db('data')->where('id',10)->update($data);// 2
$rel = db('data')->where('id','eq',10)->update($data);// 3
dump($rel);
}
}
出力結果int(1)
文字列の条件文字列の条件を使って直接に検索します.
$rel1 = db('data')->where('id=15 and type=0')->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE ( id=15 and type=0 )
文字列条件+前処理機構を使って一緒に使用します.$rel1 = db('data')->where("id=:id and type=:type")->bind(['id'=>15,'type'=>0])->select();// 1
$rel2 = db('data')->where("id=? and type=?")->bind([15,0])->select();// 2
$rel3 = db('data')->where("id=:id and type=:type",array('id'=>$id,'type'=>$type))->select();// 3
$rel4 = db('data')->where("id=? and type=?",array($id,$type))->select();// 4
コンパイル結果SELECT * FROM `tp_data` WHERE ( id='15' and type='0' )
配列条件(tp公式推奨)一般クエリー
$map = array(
'id'=>15,
'type'=>0,
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE `id` = 15 AND `type` = 0
表式クエリー表式には大文字と小文字の区別なく、サポートされているクエリー表式には以下のような種類があります.
表式
意味
EQ
イコール(=)
NEQ
等しくない(<>)
GT
大きい(>)
EGT
以上(>=)
LT
小さい(
ELT
小なりイコール(=)
LIKE
あいまい検索
[NOT]BETWEEN
(不在)区間照会
[NOT]IN
(不在)INクエリ
条件判定クエリ
例1:クエリー
id<10
およびtype=0
のデータ$map = array(
'id'=>array('lt',10),
'type'=>array('eq',0),
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE `id` < 10 AND `type` = 0
あいまい検索例2:クエリー
name like %xiao%
$map = array(
'name'=>array('like','%xiao%'),
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE `name` LIKE '%xiao%'
例3:クエリーname like %xiao% or name like %rufeike%
$map = array(
'name'=>array('like',array('%xiao%','%rufeike%'),'OR'),
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE (`name` LIKE '%xiao%' OR `name` LIKE '%rufeike%')
[not]between検索$map = array(
'id'=>array('between',array(1,2))//
);
$rel1 = db('data')->where($map)->select();// 1
$map = array(
'id'=>array('between','1,2')//
);
$rel2 = db('data')->where($map)->select();// 2
コンパイル結果SELECT * FROM `tp_data` WHERE `id` BETWEEN 1 AND 2
[not]inクエリ$map = array(
'id'=>array('in','1,2')
);
$rel1 = db('data')->where($map)->select();// 1
$map = array(
'id'=>array('in',array(1,2))
);
$rel2 = db('data')->where($map)->select();// 2
コンパイル結果 SELECT * FROM `tp_data` WHERE `id` IN (1,2)
クイック検索異なるフィールドと同じ条件のクエリー
// id=1 type = 1
$map = array(
'id&type'=>1
);
$rel1 = db('data')->where($map)->select();// 1
// id=1 type = 1
$map = array(
'id|type'=>1
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE ( `id` = 1 AND `type` = 1 )
SELECT * FROM `tp_data` WHERE ( `id` = 1 OR `type` = 1 )
区間検索同じフィールド、異なる条件のクエリー
例1
id > 1 AND id < 10
$map = array(
'id'=>array(array('gt',1),array('lt',10))
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果 SELECT * FROM `tp_data` WHERE ( `id` > 1 AND `id` < 10 )
例2 id < 10 OR id > 12
$map = array(
'id'=>array(array('lt',10),array('gt',12),'OR')
);
$rel1 = db('data')->where($map)->select();// 1
コンパイル結果SELECT * FROM `tp_data` WHERE ( `id` < 10 OR `id` > 12 )
コールバック$map = array(
'id'=>array('gt',5)
);
$map2 = array(
'id'=>array('lt',15),
'type'=>array('eq',0),
);
$rel1 = db('data')->where($map)->where($map2)->select();// 1
コンパイル結果 SELECT * FROM `tp_data` WHERE ( `id` > 5 AND `id` < 15 ) AND `type` = 0