1.クエリ メソッド
ThinkPHP は、文字列条件クエリ、インデックス配列条件クエリ、オブジェクト項目クエリの 3 つの基本的なクエリ メソッドを提供します。ほとんどの場合、より安全なため、インデックス配列とオブジェクトをクエリ条件として使用することをお勧めします
1. 条件クエリとして文字列を使用します
//条件クエリとして文字列を使用します
$user = M('User');
var_dump( $user->where('id=1 AND user="クレヨンしんちゃん"')->select());
//最終的に生成されたSQL文
SELECT * FROM `think_user` WHERE ( id= 1 AND user="クレヨンしんちゃん" )
追記: クエリメソッドには条件のみを含める必要があり、AND などの結合子を使用して複数の条件を追加できます。 SQL コヒーレント操作について詳しく学習します。
2. インデックス配列をクエリ条件として使用します
//インデックス配列を条件クエリとして使用します
$user = M('User');
$condition['id'] = 1;
$condition['user' ] = 'Crayon Xiaoxin';
var_dump($user->where($condition)->select());
//最終的に生成された SQL ステートメント
SELECT * FROM `think_user` WHERE ( `id` = 1 ) AND ( `user` = 'Crayon Little
New' )
追記: インデックス配列クエリのデフォルトの論理関係は AND です。これを OR に変更したい場合は、_logic を使用してクエリ ロジックを定義できます。
上記のコードに基づいて次の行を追加します:
$condition['_logic'] = 'OR'; //デフォルトの AND を OR に変更します
3. オブジェクト メソッドを使用してクエリ
//オブジェクトを条件クエリとして使用します
$user = M ('ユーザー');
$condition = new stdClass();
$condition->id = 1;
$condition->user = 'クレヨンしんちゃん';
var_dump($user- >where($ 条件)->select());
//最終的に生成された SQL ステートメント
SELECT * FROM `think_user` WHERE ( `id` = 1 ) AND ( `user` = 'Crayon Little
New' )
追記: stdClass クラスは PHP の組み込みクラスであり、空のクラスとして理解できます。ここでは、条件の
フィールドを stdClass クラスのメンバーとして保存すると理解できます。ここでの '' は、名前空間をルート ディレクトリに設定するためのものです。そうしないと、このクラスが現在のディレクトリで見つからなくなります。オブジェクト クエリと配列クエリを使用しても、効果は同じであり、置き換えることができます。ほとんどの場合、
ThinkPHP は効率を高めるために配列形式を使用することを推奨します。
2.式クエリ
より大きい、等しい、より小さいなどの SQL クエリなど、あいまいな判断を行う必要があるクエリには、テーブル式クエリ方法を使用できます。
クエリ式の形式: $map['フィールド名'] = array('式','クエリ条件');
式クエリテーブル
式の意味
EQは(=)に等しい
NEQは(<に等しくない) >)
GT より大きい (>)
EGT 以上 (>=)
LT 未満 (<)
ELT 以下 (<=)
[NOT]LIKE ファジー クエリ
[NOT] BETWEEN (ここにはありません) 間隔クエリ
[NOT] IN (not) IN クエリ
EXP 式クエリ、SQL 構文をサポートします
PS: 式では大文字と小文字が区別されません。
//EQ: (=)
$map['id'] = array('eq', 1); //ここで id=1 です
//NEQ: (<>)
と等しくありません$map ['id'] = array('neq', 1); //ここで id<>1
//GT: より大きい (>)
$map['id'] = array('gt ', 1 ); //ここで id>1
//EGT: 以上 (>=)
$map['id'] = array('egt', 1); //ここで id> ;=1
// LT: ($map['id'] = array('lt', 1); //ここで id//ELT: 以下 ( <=)
$map['id '] = array('elt', 1); //どこが id<=1
//[NOT]LIKE: ファジークエリ
$map['user'] = array ('like', '%小%' ); //どこが %小%のようです
//[NOT]LIKE: ファジークエリ
$map['user'] = array('notlike', '%小%' ); //どこが %小% ではない %
//[NOT]LIKE: ファジークエリの配列メソッド
$map['user'] = array('like', array('%小%', '% wax%'), 'AND');
//生成された SQL
SELECT * FROM `think_user` WHERE ( (`user` LIKE '%小%' AND `user`
LIKE '%wax%') )
// [NOT] BETWEEN: 間隔クエリ
$map ['id'] = array('between','1,3');
//ここで `id` は BETWEEN '1' AND '2' です
//同じ上記と同等
$map['id'] = array('between',array('1','3'));
//[NOT] BETWEEN: 間隔クエリ
$map['id'] = array ('not between','1,3') ;
//ここで `id` は '1' と '2' の間にありません
//[NOT] IN: 間隔クエリ
$map['id'] = 配列('in','1,2,4' );
//ここで `id` は IN ('1','2','4')
//[NOT] IN: 間隔クエリ
$map[ 'id'] = array('not in', '1,2,4');
//ここで `id` は NOT IN ('1','2','4')
//EXP: Custom
$map['id'] = array( 'exp','in (1,2,4)');
//ここで `id` は IN ('1','2','4') ではありません
追記: 2 番目で exp のカスタマイズを使用します。パラメーターに対して where ステートメントを直接記述するだけです
//EXP: OR ステートメントをカスタマイズします
$map['id'] = array('exp', '=1');
$ map['user'] = array(' exp', '="クレヨンしんちゃん"');
$map['_logic'] = 'OR';
//WHERE is ( (`id` =1) ) または ( (`user` =" 新クレヨンしんちゃん") )
3 つ。クイッククエリ
ショートカット クエリ方法は、複数フィールド クエリを記述する簡素化された方法です。複数のフィールドは OR を表すために「|」で区切られ、AND を表すために「&」
で区切られます。
1. 異なるフィールドに同じクエリ条件を使用する
$user = M('User');
$map['user|eemail'] = 'a'; が置き換えられます。 with '& ' は AND になります
var_dump($user->where($map)->select());
2. フィールドごとに異なるクエリ条件を使用します
//異なるクエリ条件を使用します
$user = M(' User') ;
$map['id&user'] = array(1,'クレヨンしんちゃん','_multi'=>true);
var_dump($user->where($map)->select ());
PS: '_multi' を true に設定すると、ID が 1 に対応し、ユーザーが「クレヨンしんちゃん」に対応するようになります。そうでない場合、
ID が 1 に対応し、ユーザーも対応することになります。 『クレヨンしんちゃん』へ。さらに、この設定は配列の最後に配置する必要があります。
//クイッククエリと組み合わせた式をサポート
$user = M('User');
$map['id&user'] = array(array('gt', 0),'クレヨンしんちゃん','_multi' =>true);
var_dump($user->where($map)->select());
IV.間隔クエリ
ThinkPHP は、特定のフィールドの間隔クエリをサポートしています。
//インターバルクエリ
$user = M('User');
$map['id'] = array(array('gt', 1), array('lt', 4));
var_dump($ user->where($map)->select());
//3 番目のパラメータは論理 OR を設定します
$user = M('User');
$map['id'] = array(array ('gt', 1), array('lt', 4), 'OR');
var_dump($user->where($map)->select());
5.複合クエリ
複合クエリは、インデックス配列クエリ方式をベースに、文字列クエリ(_string)、複合クエリ(_complex)、リクエスト文字列クエリ(_query)を追加したクエリです。上書きされます。
//文字列クエリ (_string)
$user = M('User');
$map['id'] = array('eq', 1);
$map['_string'] ='user= "クレヨンしんちゃん" AND email="xiaoxin@163.com"';
var_dump($user->where($map)->select());
//リクエスト文字列クエリ(_query)
$ user = M('ユーザー');
$map['id'] = array('eq', 1);
$map['_query'] ='user=クレヨンしんちゃん&email=xiaoxin@163.com&_logic= OR ';
var_dump($user->where($map)->select());
追記: このメソッドは URL メソッドであり、引用符は必要ありません。
//複合クエリ (_complex)
$user = M('User');
$where['user'] = array('like', '%小%');
$where['id'] = 1;
$where['_logic'] = 'OR';
$map['_complex'] = $where;
$map['id'] = 3;
$map['_logic'] = 'OR' ;
var_dump($user->where($map)->select());
追記: 複合クエリではより複雑なクエリを構築できます。ここでは id=1 または id=3 を実装できます。
6つ。統計クエリ
ThinkPHP は、データの統計クエリのためのメソッドをいくつか提供します。
//データ項目の総数
$user = M('User');
var_dump($user->count());
//フィールドの総数、NULL が発生した場合は統計はありません
$user = M( 'ユーザー');
var_dump($user->count('email'));
//最大値
$user = M('ユーザー');
var_dump($user->max(' id' ));
//最小値
$user = M('User');
var_dump($user->min('id'));
//平均値
$user = M('User ') ;
var_dump($user->avg('id'));
//合計を見つけます
$user = M('User');
var_dump($user->sum('id') );
セブン。動的クエリ
PHP5 言語の機能を利用して、ThinkPHP は動的クエリを実装します。
1.getBy動的クエリ
//email=xiaoin@163.comのデータを検索
$user = M('User');
var_dump($user->getByemail('xiaoxin@163.com')) ;
2.getFieldBy 動的クエリ
// user を通じて対応する ID 値を取得します
$user = M('User');
var_dump($user->getFieldByUser('Luffy', 'id'));
八。 SQL クエリ
ThinkPHP はネイティブ SQL クエリをサポートしています。
1.query は
を読み取ります。//クエリ結果セット。分散読み取りと書き込みの分離が使用されている場合、常に読み取りサーバーで実行されます
$user = M('User');
var_dump($user->query( 'SELECT * FROM think_user'));
2.write を実行
//更新と書き込み、分散読み取りと書き込みの分離が使用されている場合、それらは常に書き込みサーバーで実行されます
$user = M('User');
var_dump($user ->execute('UPDATE think_user set user="Crayon Daxin" WHERE
id=1'));
追記: サブクエリでは多くのコヒーレント操作が使用されるため、コヒーレント操作の中で説明します。
上記では、関連する内容も含めて ThinkPHP-SQL クエリ ステートメントを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。