ホームページ  >  記事  >  バックエンド開発  >  PHPクエリの実装方法の種類とthinkphpでのクエリ実装方法の紹介

PHPクエリの実装方法の種類とthinkphpでのクエリ実装方法の紹介

伊谢尔伦
伊谢尔伦オリジナル
2017-07-15 11:57:002292ブラウズ

クエリ関数は日常の開発で頻繁に使用されます。今日、当社の PHP 中国語 Web サイトでは、クエリ関数の実装方法を説明し、thinkphp でのクエリ関数の使用方法を簡単に紹介します。

SQL マッチング パターン

1. SQL マッチング パターンを使用する場合、operator= または! =、代わりに演算子 LIKE または NOT LIKE を使用します。

2. SQL マッチング モードを使用して、MYSQL は 2 種類の ワイルドカード を提供します。

% は任意の数の任意の文字 (0 を含む) を表します。

_ は任意の 1 文字を表します。

3. 一致形式に上記の 2 つのワイルドカード文字が含まれていない場合、クエリの効果は次のようになります。 = または! と同等です。 =

4. SQL マッチング パターンを使用します。マッチングする場合、大文字と小文字は区別されません

#查询用户名以某个字符开头的用户
#查询用户名以字符'l'开头的用户: l%
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名以某个字符结尾的用户
#查询用户名以字符'e'结尾的用户:e%
SELECT * FROM user WHERE username LIKE 'e%';
#查询用户名包含某个字符的用户
#查询用户名包含字符'o'的用户:%o%
SELECT * FROM user WHERE username LIKE '%o%';
#查询包含三个字符的用户
SELECT * FROM user WHERE username LIKE '_';
#查询用户名第二个字符为o的用户:_o%
SELECT * FROM user WHERE username LIKE '_o%';

正規表現マッチング パターン

ワイルドカード (正規表現)

.任意の 1 文字に一致

* 0 に一致またはその前の文字

x* は、任意の数の x 文字と一致することを意味します

[..] 括弧内の任意の文字と一致します
[abc] 文字 ab または c と一致します
[a-z] 任意の文字と一致します
[0-9]任意の数値と一致します
[0-9]* 任意の数値の任意の数値と一致します
a は文字 a で始まることを意味します

$ は特定の文字または文字列で終わることを意味します s$ は文字 s で終わることを意味します

正規表現一致モードを使用します。使用される演算子は次のとおりです:

REGEXP または NOT REGEXP(RLIKE または NOT RLIKE)

注: 正規表現一致パターンの場合、正規表現が一致フィールドのどこかにある場合、パターンは

一致させるために両側にワイルドカードを置く必要はありません

N と仮定して、一致するパターンは N 以上であることを示します。

上の文をどう理解すればよいでしょうか?

つまり

... 3 文字以上のデータと一致します

.... 4 文字以上のデータと一致します

#ユーザー名が文字 l で始まるユーザーをクエリします: ^l;

#正規表現 書き方

SELECT * FROM user WHERE username REGEXP '^l';
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE 'l%';
#查询用户名正好是三个字符的用户:^...$;
#sql匹配模式写法:
SELECT * FROM user WHERE username LIKE '_';
#正则表达式写法
SELECT * FROM user WHERE username REGEXP '^...$';

thinkphp のようなファジークエリ



現在、プロジェクト開発に think
php フレームワーク

を使用する人が増えていますが、カプセル化が優れているため、純粋な PHP 開発の多くの部分がそうではありません。この記事の例 つまり、これを説明するために、同様のファジー クエリを例に挙げます。

ここでは主に使用例を使用して説明します:

ThinkPHP はクエリ条件として文字列の直接使用をサポートできますが、ほとんどの場合、より安全であるため、インデックス配列またはオブジェクトをクエリ条件として使用することをお勧めします。

1. クエリ条件として文字列を使用します

これは最も伝統的な方法ですが、あまり安全ではありません

例:

$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();

複数フィールドのクエリを実行すると、最終的に生成される SQL ステートメントは次のようになります。デフォルトの論理関係は論理 AND AND ですが、_logic を使用してクエリ ロジックを定義することにより、デフォルトの論理判断を次のルールで変更できます:

SELECT * FROM think_user WHERE type=1 AND status=1

最終的に生成される SQL ステートメントは

$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR';
// 把查询条件传入查询方法
$User->where($condition)->select();

2. 配列クエリ条件としてのモード

ここまで述べたので、like クエリを実装する方法を見てみましょう

SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'

like クエリは次のとおりです:

$userForm=M('user'); 
$where['name']=array('like','php%');
$userForm->where($where)->select();

クエリ ステートメント:

name like 'php%'

以上がPHPクエリの実装方法の種類とthinkphpでのクエリ実装方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。