Home > Article > Backend Development > Introduction to the types of implementation methods of PHP query and how to implement query in thinkphp
The query function is often used in daily development. Today, our PHP Chinese website will take you through the implementation method of the query function and briefly introduce how to use the query function in thinkphp.
SQL matching mode
1. When using sql matching mode, you cannot use the operator= or! =, instead use the operator LIKE or NOT LIKE;
2. Using sql matching mode, MYSQL provides 2 types of wildcard characters .
% represents any number of any characters (including 0)
_ represents any single character
3. Use sql matching mode, if the matching format does not contain the above The query effect of any one of the two wildcard characters is equivalent to = or! =
4. Use sql matching pattern. When matching, it is not case-sensitive
#查询用户名以某个字符开头的用户 #查询用户名以字符'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%';
Regular expressionMatching pattern
Wildcard (regular expression)
. Matches any single character
*matches 0 or more characters before it
x * means match any number of x characters
[..] Match any character in brackets
[abc] Match the character ab or c
[a-z] Match any letter
[0- 9] Match any number
[0-9]* Match any number of any number
[a-z]* Match any number of letters
^ represents a certain character or string Start
^a means starting with the letter a
$ means ending with a certain character or string
s$ means ending with the letter s
The operators used to use regular expression matching patterns are:
REGEXP or NOT REGEXP (RLIKE or NOT RLIKE)
Note: Regular expression matching patterns, their regular expressions appear in Matching any position of the field,
its pattern will be matched, and there is no need to put a wildcard character on both sides to make it match;
If only the wildcard character . is used to match, assuming N, then the other The matching pattern indicates that it is greater than or equal to N;
How to understand the above sentence?
That is to say
... Match data that is greater than or equal to 3 characters
.... Match data that is greater than or equal to 4 characters
#Query the user name with the character l Users starting with: ^l;
#Regular expression writing
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 like fuzzy query
Currently using thinkphp framework There are more and more people developing projects. Due to its good encapsulation, many parts of pure PHP development are not easy to get started. This article uses like fuzzy query as an example to illustrate this.
Here we mainly use examples to illustrate usage:
ThinkPHP can support the direct use of strings as query conditions, but in most cases it is recommended to use index arrays or objects as query conditions, because it will be safer .
1. Use strings as query conditions
This is the most traditional method, but it is not very safe.
For example:
$User = M("User"); // 实例化User对象 $User->where('type=1 AND status=1')->select();
The last generated SQL statement Yes
SELECT * FROM think_user WHERE type=1 AND status=1
If you perform a multi-field query, the default logical relationship between fields is logical AND, but the default logical judgment can be changed using the following rules, by using _logic to define the query logic:
$User = M("User"); // 实例化User对象 $condition['name'] = 'thinkphp'; $condition['account'] = 'thinkphp'; $condition['_logic'] = 'OR'; // 把查询条件传入查询方法 $User->where($condition)->select();
The final SQL statement generated is
SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
2. Array mode as query condition
I have talked so much about how to implement like query, let’s see below
$userForm=M('user'); $where['name']=array('like','php%'); $userForm->where($where)->select();
The like query here is:
name like 'php%'
Query statement:
$where['name']=array('like',array('%php%','%.com'),'OR');
The above is the detailed content of Introduction to the types of implementation methods of PHP query and how to implement query in thinkphp. For more information, please follow other related articles on the PHP Chinese website!