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

ThinkPHP – SQL-Abfrageanweisung

Aug 08, 2016 am 09:31 AM
array gt map user where

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.

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien? Wie liest Springboot Listen, Arrays, Kartensammlungen und Objekte in YML-Dateien? May 11, 2023 am 10:46 AM

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

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

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

So legen Sie die Ablaufzeitkarte in Java fest So legen Sie die Ablaufzeitkarte in Java fest May 04, 2023 am 10:13 AM

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.

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

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

Welche Möglichkeiten gibt es, Thread-Sicherheit für Map in Java zu implementieren? Welche Möglichkeiten gibt es, Thread-Sicherheit für Map in Java zu implementieren? Apr 19, 2023 pm 07:52 PM

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

So konvertieren Sie Objekte in Java mit BeanMap in Karten So konvertieren Sie Objekte in Java mit BeanMap in Karten May 08, 2023 pm 03:49 PM

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.

So konfigurieren und verwenden Sie das Kartenmodul im Nginx-Server So konfigurieren und verwenden Sie das Kartenmodul im Nginx-Server May 21, 2023 pm 05:14 PM

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 Sie die Leistung der Go-Sprachkarte Optimieren Sie die Leistung der Go-Sprachkarte Mar 23, 2024 pm 12:06 PM

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

See all articles