ThinkPHP – SQL-Abfrageanweisung
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 ist1 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.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



application.yml definiert die Listensammlung. Die erste Möglichkeit besteht darin, die Annotation @ConfigurationProperties zu verwenden, um alle Werte der Listensammlung zu erhalten Hier ist zu beachten, dass beim Definieren der Listensammlung zunächst eine Konfigurationsklasse Bean definiert und dann die Annotation @ConfigurationProperties verwendet wird, um den Wert der Listensammlung zu erhalten. @Component übergibt die Entitätsklasse an das Spring-Management @ConfigurationPropertie

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

1. Technischer Hintergrund In der tatsächlichen Projektentwicklung verwenden wir häufig Caching-Middleware (wie Redis, MemCache usw.), um die Verfügbarkeit und Robustheit des Systems zu verbessern. Wenn das Projekt jedoch relativ einfach ist, besteht in vielen Fällen keine Notwendigkeit, speziell Middleware wie Redis einzuführen, um die Komplexität des Systems zu erhöhen und Caching zu verwenden. Verfügt Java selbst über nützliche, leichtgewichtige Caching-Komponenten? Die Antwort ist natürlich ja, und es gibt mehr als einen Weg. Zu den gängigen Lösungen gehören: ExpiringMap-, LoadingCache- und HashMap-basierte Paketierung. 2. Technische Effekte zur Realisierung allgemeiner Cache-Funktionen, z. B. veraltete Löschstrategie, Aufwärmen von Hotspot-Daten. 3. ExpiringMap3.

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

Methode 1. Verwenden Sie HashtableMapashtable=newHashtable(); Das ist das Erste, woran jeder denkt. Warum ist es also threadsicher? Werfen Sie dann einen Blick auf den Quellcode. Wir können sehen, dass unsere häufig verwendeten Methoden wie put, get und containsKey alle synchron sind, sodass es sich um threadsicheren publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key handelt. hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Es gibt viele Möglichkeiten, Javabeans und Maps zu konvertieren, wie zum Beispiel: 1. Beans über ObjectMapper in JSON konvertieren und dann JSON in Map konvertieren. Nach dem Testen wurden 10.000 Beans konvertiert. es dauert 12 Sekunden! ! ! Nicht empfohlen. 2. Erhalten Sie die Attribute und Werte der Bean-Klasse durch Java-Reflektion und konvertieren Sie sie dann in die der Karte entsprechenden Schlüssel-Wert-Paare. Diese Methode ist die zweitbeste, aber etwas aufwändiger. 3. Durch die Methode net.sf.cglib.beans.BeanMap in der Klasse ist diese Methode äußerst effizient. Der Unterschied zur zweiten Methode besteht darin, dass die Bean aufgrund der Verwendung des Caches initialisiert werden muss erstellt.

Die Map-Direktive verwendet das Modul ngx_http_map_module. Standardmäßig lädt Nginx dieses Modul, sofern nicht künstlich --without-http_map_module. Das Modul ngx_http_map_module kann Variablen erstellen, deren Werte mit den Werten anderer Variablen verknüpft sind. Ermöglicht die Klassifizierung oder gleichzeitige Zuordnung mehrerer Werte zu mehreren verschiedenen Werten und die Speicherung in einer Variablen. Die Map-Direktive wird zum Erstellen einer Variablen verwendet, führt die Ansichtszuordnungsoperation jedoch nur aus, wenn die Variable akzeptiert wird Bei der Verarbeitung von Anforderungen, die nicht auf Variablen verweisen, weist das Modul keine Leistungsmängel auf. 1.ngx_http_map_module Modulanweisungsbeschreibung Kartensyntax

Optimieren der Leistung der Go-Sprachkarte In der Go-Sprache ist Karte eine sehr häufig verwendete Datenstruktur, die zum Speichern einer Sammlung von Schlüssel-Wert-Paaren verwendet wird. Allerdings kann die Kartenleistung bei der Verarbeitung großer Datenmengen beeinträchtigt werden. Um die Leistung der Karte zu verbessern, können wir einige Optimierungsmaßnahmen ergreifen, um die zeitliche Komplexität von Kartenoperationen zu reduzieren und dadurch die Ausführungseffizienz des Programms zu verbessern. 1. Kartenkapazität vorab zuweisen. Beim Erstellen einer Karte können wir die Anzahl der Kartenerweiterungen reduzieren und die Programmleistung verbessern, indem wir Kapazität vorab zuweisen. Im Allgemeinen wir
