ThinkPHP -- SQL クエリ ステートメント
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 チュートリアルに興味のある友人に役立つことを願っています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











application.yml はリスト コレクションを定義します。最初の方法は、@ConfigurationProperties アノテーションを使用して、リスト コレクション type:code:status:-200-300-400-500 のすべての値を取得することです。エンティティ クラスを記述しますここで注意が必要なのは、リスト Collection の定義では、まず設定クラス Bean を定義し、次に @ConfigurationProperties アノテーションを使用してリストコレクションの値を取得することです。 @Component はエンティティ クラスを Spring 管理 @ConfigurationPropertie に引き渡します。

多くのユーザーはスマートウォッチを選ぶときにファーウェイブランドを選択しますが、その中でもファーウェイ GT3pro と GT4 は非常に人気のある選択肢であり、多くのユーザーはファーウェイ GT3pro と GT4 の違いに興味を持っています。 Huawei GT3pro と GT4 の違いは何ですか? 1. 外観 GT4: 46mm と 41mm、材質はガラスミラー + ステンレススチールボディ + 高解像度ファイバーバックシェルです。 GT3pro: 46.6mm および 42.9mm、材質はサファイアガラス + チタンボディ/セラミックボディ + セラミックバックシェルです。 2. 健全な GT4: 最新の Huawei Truseen5.5+ アルゴリズムを使用すると、結果はより正確になります。 GT3pro: ECG 心電図と血管と安全性を追加

1. 技術的背景 実際のプロジェクト開発では、システムの可用性と堅牢性を向上させるためにキャッシュ ミドルウェア (redis、MemCache など) を使用することがよくあります。ただし、多くの場合、プロジェクトが比較的単純であれば、キャッシュを使用するために Redis などのミドルウェアを特別に導入してシステムの複雑さを増大させる必要はありません。それでは、Java 自体には便利な軽量キャッシュ コンポーネントがあるのでしょうか?答えはもちろん「はい」であり、方法は複数あります。一般的なソリューションには、ExpiringMap、LoadingCache、および HashMap ベースのパッケージ化が含まれます。 2. 古い削除戦略、ホットスポット データのウォームアップなど、キャッシュの一般的な機能を実現するための技術的効果 3. ExpiringMap3。

Windows 11 で Snipping Tool が機能しない理由 問題の根本原因を理解すると、適切な解決策を見つけるのに役立ちます。 Snipping Tool が正しく動作しない主な理由は次のとおりです。 フォーカス アシスタントがオンになっている: これにより、Snipping Tool が開かなくなります。破損したアプリケーション: 起動時にスニッピング ツールがクラッシュする場合は、破損している可能性があります。古いグラフィック ドライバー: 互換性のないドライバーは、スニッピング ツールに干渉する可能性があります。他のアプリケーションからの干渉: 実行中の他のアプリケーションが Snipping Tool と競合する可能性があります。証明書の有効期限が切れています: アップグレード プロセス中のエラーにより、この問題が発生する可能性があります。これらの簡単な解決策は、ほとんどのユーザーに適しており、特別な技術知識は必要ありません。 1. Windows および Microsoft Store アプリを更新する

方法 1. HashtableMapashtable=newHashtable(); を使用する これは誰もが最初に考えることですが、なぜスレッドセーフなのでしょうか?次に、そのソース コードを見てみましょう。put、get、containsKey などの一般的に使用されるメソッドはすべて同期していることがわかります。そのため、スレッドセーフである publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key。 hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Javabean とマップを変換するには、次のようなさまざまな方法があります: 1. ObjectMapper を介して Bean を json に変換し、次に json をマップに変換します。しかし、この方法は複雑で非効率です。テスト後、10,000 個の Bean がループで変換されました。 12秒かかります! ! ! 2. Java リフレクションを通じて Bean クラスの属性と値を取得し、マップに対応するキーと値のペアに変換する この方法は次善の方法ですが、少し面倒です。 3. クラスの net.sf.cglib.beans.BeanMap メソッドを使用するこのメソッドは非常に効率的ですが、2 番目のメソッドとの違いは、キャッシュを使用するため、最初に Bean を初期化する必要があることです。作成した。

Map ディレクティブは ngx_http_map_module モジュールを使用します。デフォルトでは、nginx は人為的に --without-http_map_module を指定しない限り、このモジュールをロードします。 ngx_http_map_module モジュールは、その値が他の変数の値に関連付けられた変数を作成できます。複数の値を分類したり、複数の異なる値に同時にマッピングしたり、変数に保存したりすることができます。マップ ディレクティブは変数の作成に使用されますが、変数が受け入れられた場合にのみビュー マッピング操作を実行します。変数を参照しないリクエストを処理する場合、このモジュールにはパフォーマンス上の欠点はありません。 1.ngx_http_map_module モジュール命令説明マップの構文

パート 1: 最初のトラブルシューティング手順 Apple のシステムステータスを確認する: 複雑な解決策を掘り下げる前に、基本から始めましょう。問題はデバイスにあるのではなく、Apple のサーバーがダウンしている可能性があります。 Apple のシステム ステータス ページにアクセスして、AppStore が適切に動作しているかどうかを確認してください。問題があれば、Apple が修正してくれるのを待つしかありません。インターネット接続を確認します。「AppStore に接続できません」問題は接続不良が原因である場合があるため、安定したインターネット接続があることを確認してください。 Wi-Fi とモバイル データを切り替えるか、ネットワーク設定をリセットしてみてください ([一般] > [リセット] > [ネットワーク設定のリセット] > [設定])。 iOS バージョンを更新します。
