Heim >Backend-Entwicklung >PHP-Tutorial >ThinkPHP – SQL-Abfrageanweisung

ThinkPHP – SQL-Abfrageanweisung

WBOY
WBOYOriginal
2016-08-08 09:31:201331Durchsuche

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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn