1. Abfragemethoden
ThinkPHP bietet drei grundlegende Abfragemethoden: Zeichenfolgenbedingungsabfrage, Indexarray-Bedingungsabfrage und Objektbedingungsabfrage. In den meisten Fällen wird empfohlen, Indexarrays und Objekte als Abfragebedingungen zu verwenden, da dies sicherer ist
1 Verwenden Sie Zeichenfolgen als Bedingungsabfragen
//Strings als Bedingungsabfragen
$user = M( 'User ');
var_dump($user->where('id=1 AND user="Crayon Shin-chan"')->select());
//Endlich generierte SQL-Anweisung
SELECT * FROM `think_user` WHERE ( id=1 AND user="Crayon Shin-Chan" )
PS: Wobei die Abfragemethode nur Bedingungen enthalten muss, mehrere Bedingungen plus Konnektoren wie AND. Wir werden
ausführlich über kohärente SQL-Operationen lernen.
2. Indexarray als Abfragebedingung verwenden
//Indexarray als Bedingungsabfrage
$user = M('User');
$condition['id'] = 1;
$condition['user'] = 'Crayon Shin-chan';
var_dump($user->where($condition)->select());
//Endlich generierte SQL-Anweisung
SELECT * FROM `think_user` WHERE ( `id` = 1 ) AND ( `user` = 'Crayon Little
New' )
PS: Die standardmäßige logische Beziehung der Index-Array-Abfrage ist AND, wenn Sie ändern möchten es zu ODER, Sie können _logic verwenden, um Abfragelogik zu definieren.
Fügen Sie die folgende Zeile basierend auf dem obigen Code hinzu:
$condition['_logic'] = 'OR'; //Ändern Sie das Standard-AND in OR
3. Verwenden Sie die Objektmethode zur Abfrage
//Objektabfrage als Bedingung
$user = M('User');
$condition = new stdClass();
$condition->id = 1;
$condition-> ;user = ' Crayon Shin-chan';
var_dump($user->where($condition)->select());
//Endgültig generierte SQL-Anweisung
SELECT * FROM `think_user ` WHERE ( ` id` = 1 ) AND ( `user` = 'Crayon Little
Neu' )
PS: Die stdClass-Klasse ist eine integrierte Klasse in PHP und kann hier als leere Klasse verstanden werden es kann so verstanden werden, dass die bedingte
Felder werden als Mitglieder in der stdClass-Klasse gespeichert. Das '' hier dient dazu, den Namespace auf das Stammverzeichnis festzulegen, andernfalls
wird diese Klasse nicht im aktuellen Verzeichnis gefunden. Bei der Verwendung von Objekt- und Array-Abfragen ist der Effekt derselbe und kann ausgetauscht werden. In den meisten Fällen empfiehlt
ThinkPHP die Verwendung der Array-Form, um effizienter zu sein.
2. Ausdrucksabfrage
Für Abfragen, die eine Fuzzy-Beurteilung erfordern, z. B. SQL-Abfragen wie „größer als“, „gleich“ und „kleiner als“, können Sie die Tabellenausdrucksabfragemethode
verwenden.
Abfrageausdrucksformat: $map['Feldname'] = Array('Ausdruck','Abfragebedingung');
Ausdrucksabfragetabelle
Ausdrucksbedeutung
EQ ist gleich (= )
NEQ ist nicht gleich (<>)
GT ist größer als (>)
EGT ist größer oder gleich (>=)
LT ist kleiner als (<)
ELT ist kleiner oder gleich (< ;=)
[NOT]LIKE Fuzzy-Abfrage
[NOT] BETWEEN (not)interval query
[NOT] IN (not)IN query
EXP-Ausdrucksabfrage, unterstützt SQL-Syntax
PS: Bei Ausdrücken wird die Groß-/Kleinschreibung nicht beachtet.
//EQ: gleich (=)
$map['id'] = array('eq', 1); //wo ist id=1
//NEQ: ungleich ( <>)
$map['id'] = array('neq', 1); //wo ist id<>1
//GT: größer als (>)
$map[ 'id'] = array('gt', 1); //wo ist id>1
//EGT: größer oder gleich (>=)
$map['id' ] = array('egt ', 1); //wo ist id>=1
//LT: kleiner als (<)
$map['id'] = array('lt', 1 ); //wo ist id< ;1
//ELT: kleiner oder gleich (<=)
$map['id'] = array('elt', 1); id<=1
//[ NOT]LIKE: Fuzzy query
$map['user'] = array('like', '%小%'); //wo ist wie %小%
//[NOT]LIKE: Fuzzy-Abfrage
$map['user'] = array('notlike', '%小%'); //wo ist nicht wie %小%
//[NOT ]LIKE: Array-Methode der Fuzzy-Abfrage
$map['user'] = array('like', array('%小%', '% Wax%'), 'AND');
// Generiertes SQL
SELECT * FROM ` think_user` WHERE ( (`user` LIKE '%小%' AND `user`
LIKE '%wax%') )
//[NOT] BETWEEN: Intervallabfrage
$map['id' ] = array('between','1,3');
//wobei `id` ZWISCHEN '1' UND '2' ist
//Das Gleiche wie oben und äquivalent
$map['id' ] = array('between',array('1','3'));
//[NOT] BETWEEN: Intervallabfrage
$map[' id'] = array('not between', '1,3');
//wobei `id` NICHT ZWISCHEN '1' UND '2' ist
//[NOT] IN: Intervallabfrage
$map['id'] = array ('in','1,2,4');
//wo ist `id` IN ('1','2','4')
//[NOT] IN: Intervallabfrage
$map['id'] = array('not in','1,2,4');
//wo ist `id` NOT IN ('1','2','4 ')
//EXP: Angepasst
$map['id'] = array('exp','in (1,2,4)');
//where is `id` NOT IN ('1','2','4')
PS: Verwenden Sie exp, um die where-Anweisung anzupassen und direkt in den zweiten Parameter zu schreiben
//EXP : Anpassen, um eine ODER-Anweisung hinzuzufügen
$map['id'] = array('exp', '=1');
$map['user'] = array('exp', '=" Crayon Shin-chan"');
$map['_logic'] = 'OR';
//WHERE is ( (`id` =1) ) OR ( (`user` =" Crayon Shin- chan") )
3. Kurze Abfrage
Die Abkürzungsabfragemethode ist eine vereinfachte Methode zum Schreiben von Abfragen mit mehreren Feldern, die durch „|“ getrennt werden, um ODER darzustellen, und „&“
wird verwendet, um mehrere Felder zu trennen, um UND darzustellen.
1. Gleiche Abfragebedingungen für verschiedene Felder
//Verwenden Sie dieselben Abfragebedingungen
$user = M('User');
$map['user|eemail'] = 'a' ; / /'|' wird durch '&' ersetzt und wird zu AND
var_dump($user->where($map)->select());
2 🎜>// Verschiedene Abfragebedingungen verwenden
$user = M('User');
$map['id&user'] = array(1,'Crayon Shin-chan','_multi'=>true );
var_dump($user->where($map)->select());
PS: Setzen Sie „_multi“ auf „true“, damit die ID 1 und der Benutzer „Crayon Shin-chan“ entspricht ', andernfalls
Es wird eine Situation geben, in der die ID 1 entspricht und auch 'Crayon Shin-chan' entspricht. Darüber hinaus sollte diese Einstellung am Ende des Arrays platziert werden.
//Unterstützung von Ausdrücken kombiniert mit Schnellabfragen
$user = M('User');
$map['id&user'] = array(array('gt', 0),'Crayon Little New ','_multi'=>true);
var_dump($user->where($map)->select());
IV. Intervallabfrage
ThinkPHP unterstützt Intervallabfragen für ein bestimmtes Feld.
//Intervallabfrage
$user = M('User');
$map['id'] = array(array('gt', 1), array('lt', 4) );
var_dump($user->where($map)->select());
//Der dritte Parameter setzt logisches ODER
$user = M('User'
$map['id'] = array(array('gt', 1), array('lt', 4), 'OR');
var_dump($user->where($map ) ->select());
5. Kombinierte Abfrage
Kombinierte Abfrage ist eine erweiterte Abfrage, die auf der Index-Array-Abfragemethode basiert. Sie fügt eine Zeichenfolgenabfrage (_string), eine komplexe
komplexe Abfrage (_complex) und eine Anforderungszeichenfolgenabfrage (_query) hinzu , Duplikate werden überschrieben.
//String-Abfrage (_string)
$user = M('User');
$map['id'] = array('eq', 1);
$map[ ' _string'] ='user="Crayon Shin-chan" AND email="xiaoxin@163.com"';
var_dump($user->where($map)->select());
//Anforderungszeichenfolgenabfrage (_query)
$user = M('User');
$map['id'] = array('eq', 1);
$map[' _query '] ='user=Crayon Shin-chan&email=xiaoxin@163.com&_logic=OR';
var_dump($user->where($map)->select());
PS: This The Die erste Methode ist die URL-Methode, die keine Anführungszeichen erfordert.
//Komplexe Abfrage (_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());
PS: Zusammengesetzte Abfragen können mehr erstellen Für komplexe Abfragen kann id=1 oder id=3 implementiert werden.
6. Statistische Abfrage
ThinkPHP bietet einige Methoden zur statistischen Abfrage von Daten.
//Gesamtzahl der Datenelemente
$user = M('User');
var_dump($user->count());
//Gesamtzahl der Felder, NULL ist Keine Statistik aufgetreten
$user = M('User');
var_dump($user->count('email'));
//Maximalwert
$user = M(' User ');
var_dump($user->max('id'));
//Mindestwert
$user = M('User');
var_dump($user- > ;min('id'));
//Durchschnittswert
$user = M('User');
var_dump($user->avg('id'));
//Finde die Summe
$user = M('User');
var_dump($user->sum('id'));
7. Dynamische Abfrage
Mit den Funktionen der PHP5-Sprache implementiert ThinkPHP dynamische Abfragen.
1.getBy dynamische Abfrage
//Suchen Sie die Daten von email=xiaoin@163.com
$user = M('User');
var_dump($user->getByemail(' xiaoxin @163.com'));
2.getFieldBy dynamische Abfrage
//Erhalten Sie den entsprechenden ID-Wert über den Benutzer
$user = M('User');
var_dump($user- > ;getFieldByUser('Ruffy', 'id'));
8. SQL-Abfrage
ThinkPHP unterstützt native SQL-Abfragen.
1.query liest
//Abfrageergebnismenge, wenn verteilte Lese-/Schreibtrennung verwendet wird, wird sie immer auf dem Leseserver ausgeführt
$user = M('User');
var_dump($user ->query('SELECT * FROM think_user'));
2.execute write
//Aktualisieren und schreiben, wenn verteilte Lese-/Schreibtrennung verwendet wird, wird es immer auf dem ausgeführt Schreibserver
$ user = M('User');
var_dump($user->execute('UPDATE think_user set user="Crayon Daxin" WHERE
id=1'));
PS: Wegen sub Die Abfrage verwendet viele kohärente Operationen, die wir in den kohärenten Operationen erklären werden.
Das Obige stellt die ThinkPHP-SQL-Abfrageanweisung einschließlich des relevanten Inhalts vor. Ich hoffe, dass sie für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.