thinkphp はファジー クエリの例、thinkphp ファジー クエリのように実装します
この記事の例は、thinkphp がファジー クエリのように実装する方法を説明しており、参考のために全員と共有されています。具体的な実装方法は以下の通りです
現在、プロジェクト開発に thinkphp フレームワークを使用する人が増えていますが、そのカプセル化が優れているため、純粋な PHP 開発の多くの部分では、これを説明するための例としてファジー クエリを使用しています。
ここでは主に使用例を使用して説明します:
ThinkPHP はクエリ条件として文字列の直接使用をサポートできますが、ほとんどの場合、より安全であるため、インデックス配列またはオブジェクトをクエリ条件として使用することをお勧めします。
1. クエリ条件として文字列を使用します
これは最も伝統的な方法ですが、あまり安全ではありません
例:
コードをコピーします コードは次のとおりです:
$User = M("User") // User オブジェクトをインスタンス化します
$User->where('type=1 AND status=1')->select();
最終的に生成された SQL ステートメントは
コードをコピー コードは次のとおりです:
SELECT * FROM think_user WHERE type=1 AND status=1
複数フィールドのクエリを実行する場合、フィールド間のデフォルトの論理関係は論理 AND ですが、_logic を使用してクエリ ロジックを定義することで、次のルールを使用してデフォルトの論理判断を変更できます。
コードをコピーします コードは次のとおりです:
$User = M("User") // User オブジェクトをインスタンス化します
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR';
// クエリ条件をクエリメソッドに渡します
$User->where($condition)->select();
最終的に生成された SQL ステートメントは
コードをコピー コードは次のとおりです:
SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
2. クエリ条件としての配列メソッド
クエリのような実装方法についてはこれまで説明してきたので、以下を見てみましょう
コードをコピーします コードは次のとおりです:
$userForm=M('user');
$where['name']=array('like','jb51%');
$userForm->where($where)->select();
同様のクエリは次のとおりです:
コードをコピーします コードは次のとおりです: name like 'jb51%'
クエリステートメント:
コードをコピー コードは次のとおりです: $where['name']=array('like',array('%jb51%','%.com'),'OR ');
同様のクエリは次のとおりです:
コードをコピーします
コードは次のとおりです: 「%jb51%」のような名前、または「%.com」のような名前
クエリステートメント:
コードをコピー
コードは次のとおりです:$where['name']=array(array('like','%a%'),array('like','% b%' ),array('like','%c%'),'jb51','or');
同様のクエリは次のとおりです:
コードをコピーします
コードは次のとおりです:(`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '% c%') OR (`name` = 'jb51')
クエリステートメント:
コードをコピー
コードは次のとおりです:$where['_string']='("%jb51%"のような名前) OR ("%jb51"のようなタイトル)';
同様のクエリは次のとおりです:
コードをコピーします
コードは次のとおりです: '%jb51%' のような名前、または '%jb51' のようなタイトル
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
Zhao Tongzheng が thinkphp %{$_POST['username']}% の SQL ファジー クエリについて話すとき、なぜ {} があるのですか?
thinkphp を使用してデータベースにクエリを実行する方法を誰か教えてもらえませんか? なぜ機能しないのですか?