Heim >PHP-Framework >Denken Sie an PHP >Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

咔咔
咔咔Original
2021-01-11 12:15:312155Durchsuche

1. Die Db-Klassenbibliothek kombiniert geschickt Konnektoren, Abfragen und SQL-Generatoren.

Im obigen Verzeichnis wird diese Verwendung im Framework nicht empfohlen, da dies der Fall ist etwas schwierig sein.

Der Fall in diesem Abschnitt wird mit der vom Framework üblicherweise verwendeten Datenbankabfragemethode abgefragt.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Fallcode verwenden

Im Bild oben können Sie sehen, dass die am häufigsten verwendeten Abfragemethoden verwendet werden. Als Nächstes werden diese Fälle im Detail analysiert.

Derselbe Code wird für die __callStatic-Methode der Db-Klasse verwendet. Diese Methode wird ausgeführt, wenn eine nicht deklarierte statische Methode aufgerufen wird.

Diese Methode unterscheidet sich von der __call-Methode. Die __call-Methode wird aufgerufen, wenn eine Methode aufgerufen wird, die nicht vorhanden ist.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Durch Aufrufen einer nicht deklarierten statischen Methode wird

Für die Methode im obigen Bild aufgerufen: static::connect() wird schließlich object(thinkdbQuery)Auf dieses Objekt können Sie sich für die Ausführung des internen Prozesses beziehen Inhalt des zweiten Verzeichnisses. static::connect()执行最后会返回 object(thinkdbQuery)这个对象,至于内部流程的执行可以参考第二目录的内容。

所以执行流程会来到thinkphp/library/think/db/Query.php这个类的table方法。

参数就是table中传递的数据库表名tp_test

Der Ausführungsfluss kommt also zu thinkphp/library/think/db/Query.phptable Methode.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendetDer Parameter ist der in Tabelle übergebene Datenbanktabellenname Wrap: Pausenwort; Randradius: 0px 2px; Hintergrundfarbe: rgba(27, 31, 35, 0,05); break: break-all;">tp_test.

🎜🎜🎜
Geben Sie die Datentabelle des aktuellen Vorgangs an

Gemäß dem im Bild oben bereitgestellten Code wird der übergebene Tabellenname dreimal beurteilt.

  • Das erste Mal, um zu beurteilen, ob es sich um eine Zeichenfolge handelt.
  • Das zweite Mal, um zu beurteilen, ob sie existiert.
  • Das dritte Mal, um zu beurteilen, ob sie existiert. Keines der oben genannten drei Urteile ist wahr, daher wird der folgende Prozess ausgeführt.
  • In der Tabellenmethode können Sie sehen, dass der letzte Ausführungsprozess darin besteht, den übergebenen Tabellennamen im Attribut zu speichern
.

options

Führen Sie den Vorgang abschließend aus

und schließlich wird thinkdbQuery ObjectDieses Objekt wird zurückgegeben. thinkdbQuery Object这个对象进行返回。

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

返回Query对象

where方法解析

table方法分析完成后会紧接着执行where方法,同样还是在类thinkphp/library/think/db/Query.php

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Rückgabe eines Abfrageobjekts🎜🎜🎜where-Methodenanalyse🎜🎜table-Methodenanalyse Nach Abschluss wird die where-Methode sofort ausgeführt, auch in der Klassethinkphp/library/think/db/Query.php🎜🎜🎜🎜
Angeben UND Abfragebedingungen

Im Bild oben sehen Sie eine Methode in dieser Klassefunc_get_args, diese Methode gibt ein Array zurück, das die Funktionsparameterliste enthält. func_get_args,这个方法会返回一个包含函数参数列表的数组。

这个方法平时都是跟call_user_func_array同时使用,之前咔咔也使用这俩个方法进行过一次案例实验。

然后会使用函数array_shift删除数组中的第一个元素(red),并返回被删除元素的值。

下图第一个结果为func_get_args这个方法获取出来的数据,第二组结果为array_shift

Dieser Methode folgt normalerweise call_user_func_array wird gleichzeitig verwendet. Kaka hat diese beiden Methoden auch zuvor verwendet, um ein Fallexperiment durchzuführen. 🎜🎜Dann wird die Funktion verwendet array_shiftLöscht das erste Element (rot) im Array und gibt den Wert des gelöschten Elements zurück. 🎜🎜Das erste Ergebnis im Bild unten ist func_get_argsDie mit dieser Methode erhaltenen Daten, der zweite Satz von Ergebnissen, sindarray_shiftDas von dieser Methode zurückgegebene Ergebnis. 🎜

Die von den beiden Ergebnissätzen zurückgegebenen Werte können zum besseren Verständnis verglichen werdenarray_shift Verwendungsszenarien. array_shift的使用场景。

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

前后俩次返回结果对比

紧接着会进行分析查询表达式,也就是方法parseWhereExp

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Vergleich der zurückgegebenen Ergebnisse vorher und nachher

gefolgt Der Abfrageausdruck wird analysiert, d -wrap: Pausenwort; Randradius: 0px 2px; Hintergrundfarbe: rgba(27, 31, 35, 0,05); -break: break-all;">parseWhereExp tut es.

Eine Sache, die bei dieser Methode beachtet werden muss, sind die beiden übergebenen Parameter.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendetParameter eins ist die Abfragelogik und Parameter zwei ist der Parameter, der bei Verwendung der Groß-/Kleinschreibung übergeben wird.

🎜🎜🎜
Analysieren von Abfrageausdrücken

In der ersten Codezeile müssen wir einen Wissenspunkt lerneninstanceof. instanceof

instanceof可以判断某个对象是否是某个类的实例,判断一个对象是否实现了某个接口。

关于这个的使用案例在文章ThinkPHP源码解析之控制器这一文中做了详细的说明。

根据学习instanceof

Basierend auf dem Lernen传递过来的参数是否为Where类的实例。

最后一个判断就是$field instanceof Expression

Das letzte Urteil ist $field-Instanz des AusdrucksDie gleiche Funktion wie im vorherigen Schritt wird beurteilt.

Die endgültige Ausführungslogik des Codes ist also der im Bild unten eingekreiste Teil.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Array-Batchabfrage analysieren

Denken Sie daran, dass der Parameter, der in diesem Fall an where übergeben wird, ein Array ist. 🎜

Wenn Sie die Parameter ändern in where('t_id',1) will gois_string($field) Dieser Vorgang ist jedem überlassen und KaKa wird ihn nicht analysieren. where('t_id',1)则就会走is_string($field)的这个流程,这个流程就交给大家了,咔咔就不去解析。

这里咔咔还是使用数组作为参数进行解析,那么代码依然会执行本类的parseArrayWhereItems这个方法

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

数组批量查询

在这个方法中先需要知道key会返回什么,从当前内部指针位置返回元素键名。

所以代码会去执行if语句的判断,根据上边的所有判断都不符合所以会执行这段代码$where[] = [$key, is_array($val) ? 'IN' : '=', $val];

Hier verwendet Kaka immer noch Arrays als Parameter zum Parsen, dann führt der Code weiterhin den parseArrayWhereItemsDiese Methode🎜

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet🎜

🎜Bei dieser Methode müssen Sie zuerst wissenkey gibt den Elementschlüsselnamen von der aktuellen internen Zeigerposition zurück. 🎜🎜Der Code führt also die Beurteilung der if-Anweisung aus. Nach allen oben genannten Beurteilungen ist sie nicht konsistent, daher wird dieser Code ausgeführt $where[] = [$key, is_array($val) ? 'IN' : '=' , $val];🎜<p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb>Dieser Code bestimmt, ob der Wert des Schleifenarrays ein Array ist. Wenn es sich um ein Array handelt, ist es =. Da der Wert 1 ist, ist der zweite Wert des Arrays =. </p> <p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb>Dann ist der Endwert der im Bild unten abgedruckten Daten. </p> <p><img src="https://img.php.cn/upload/image/303/557/279/1610338373356051.png" title="1610338373356051.png" alt="Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet"></p> <figure style="box-sizing: border-box; margin: 10px 0px; display: flex; flex-direction: column; justify-content: center; align-items: center; border-radius: 16px; overflow: hidden; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif font-size: letter-spacing: white-space: normal word-spacing: background-color: rgb><figcaption style="box-sizing: border-box; margin-top: 5px; text-align: center; color: rgb(136, 136, 136); font-size: 12px;">Der in where zurückgegebene Wert </figcaption></figure><p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb>Da where nicht leer ist, wird der Codeausführungsprozess an der unten gezeigten Position ausgeführt und schließlich wird eine Instanz dieser Klasse zurückgegeben. </p> <p><img src="https://img.php.cn/upload/image/607/906/494/1610338367967444.png" title="1610338367967444.png" alt="Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet"></p> <figure style="box-sizing: border-box; margin: 10px 0px; display: flex; flex-direction: column; justify-content: center; align-items: center; border-radius: 16px; overflow: hidden; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif font-size: letter-spacing: white-space: normal word-spacing: background-color: rgb><figcaption style="box-sizing: border-box; margin-top: 5px; text-align: center; color: rgb(136, 136, 136); font-size: 12px;"> Speichern Sie die Abfrageparameter im Optionsattribut </figcaption></figure><p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb><span style="box-sizing: border-box; font-weight: 700; color: rgb(248, 57, 41);">find() Ausführungsprozess </span></p> <p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb>Dann führt der Code weiterhin die Suchmethode dieser Klasse aus, um einen einzelnen Datensatz zu finden. </p> <p style="box-sizing: border-box; margin-top: 0.8em; margin-bottom: 0.8em; font-size: 16px; padding-top: 8px; padding-bottom: 8px; line-height: 1.75; color: rgb(53, 53, 53); font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, " pingfang sc cambria cochin georgia times new roman serif letter-spacing: white-space: normal word-spacing: background-color: rgb>Da in find keine Parameter übergeben werden, wird der Code als <code style="box-sizing: border-box; font-size: 14px; font-family: " operator mono consolas monaco menlo monospace ausgef rand-radius: hintergrundfarbe: rgba word-break: break-all>$this->parseOptions();Analyseausdruck (kann für Abfrage- oder Schreibvorgänge verwendet werden)$this->parseOptions();分析表达式(可用于查询或者写入操作)

就目前写的案例而言,这段看似很长的代码大家好好看看都可以看明白,最终依然是返回当前的所有参数。

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

查找单条记录

以下就是返回的所以结果

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

返回所有的参数结果

真正的查询数据是这块代码$result = $this->connection->find($this);,这段代码会执行到文件thinkphp/library/think/db/Connection.php

Soweit der bisher beschriebene Fall aussieht, sieht dieser Absatz aus Wenn Sie sich den sehr langen Code genau ansehen, werden am Ende immer noch alle aktuellen Parameter zurückgegeben. 🎜

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet🎜

Einen einzelnen Datensatz finden
🎜Das Folgende ist die Rückkehr Alle Ergebnisse 🎜

image .png🎜

Alle Parameterergebnisse zurückgeben
🎜Die eigentlichen Abfragedaten sind dieser Code$result = $this->connection->find($this);, dieser Code wird in der Datei thinkphp/library/think/db/Connection.php🎜

Anhand dieses Codes können Sie erkennen, dass das Framework beim Abfragen eines Datenelements standardmäßig einen Grenzwert von 1 hinzufügt. Um herauszufinden, warum es auf diese Weise hinzugefügt wird, müssen Sie die Kenntnisse der SQL-Optimierung überprüfen.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Einen einzelnen Datensatz finden

Wenn Sie sich den Code ansehen, werden Sie verstehen, dass es sich bei der Analyse um ein einfaches Verständnis des Ausführungsprozesses und des spezifischen Codes handelt.

Was den spezifischen Implementierungsprozess betrifft, wird Kaka, wenn sich in einer späteren Phase die Möglichkeit dazu bietet, eine eingehende Analyse jeder Methode einzeln durchführen. Zu diesem Zeitpunkt wird er sich hauptsächlich auf die Analyse des Codes konzentrieren.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

SQL-Anweisungen gemäß bestimmten Regeln generieren und Abfragen durchführen

Das endgültige Rückgabeergebnis ist wie folgt

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Ergebnisse zurückgeben

Oben geht es um die von Db implementierte Datenbankabfragefunktion in Kombination mit Konnektoren, Abfragern und Generatoren.

Dies ist bisher die Analyse des Db-Szenarios. Als nächstes führt Kaka eine einfache Analyse des Modells durch.

2. Bezüglich des Implementierungsprozesses von getLastSql

Es ist immer noch der vorherige Fall, um das Ergebnis zu drucken.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Groß- und Kleinschreibung drucken

Wenn Sie das Bild oben sehen, werden Sie wissen, dass es sich um die SQL-Anweisung handelt, die schließlich vom Framework generiert wird. Dann wird Kaka Ihnen zeigen, wie diese SQL-Anweisung generiert wird.

Das Bild unten zeigt den Fall dieser Demonstration, bei dem es sich um den im Bild unten eingekreisten Bereich handelt.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Demo-Fall

Die Codeverfolgung aus dem im Bild oben eingekreisten Bereich führt zur Datei thinkphp/library/think/Db.php und führt die __callStatic-Methode dieser Klasse aus. Diese Methode wird nicht ausgeführt erklärt Ja, es wurde oben und schon oft erwähnt. thinkphp/library/think/Db.php,并且会去执行本类的__callStatic方法,这个方法就不在进行解释了,在上文和之前也已经提到过多次了。

并且返回结果也不去做声明了,上文也提到了,这里只需要知道最终返回结果为返回 object(thinkdbQuery)

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

调用未声明的静态方法时会进行执行

根据上图的返回结果可以知道最终回去调用object(thinkdbQuery)这个类的getLastSql

Und es ist nicht nötig, das Rückgabeergebnis zu deklarieren. Wie oben erwähnt, müssen Sie nur wissen, dass das endgültige Rückgabeergebnis Return object(thinkdbQuery)🎜🎜Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet🎜🎜🎜Wenn eine nicht deklarierte statische Methode aufgerufen wird, wird sie ausgeführt🎜🎜🎜Gemäß Das Rückgabeergebnis im Bild oben Sie können wissen, dass Sie schließlich object(thinkdbQuery)getLastSqlDiese Methode🎜

Mit dieser Methode können Sie feststellen, dass die SQL-Anweisung der letzten Abfrage abgerufen wird.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Holen Sie sich die SQL-Anweisung der neuesten Abfrage

Hier wird es einige Fragen geben, was das Attribut connection ist. Hier ist eine einfache Analyse.

Die Deklaration dieses Attributs erfolgt im Allgemeinen im Konstruktor dieser Klasse oder im Konstruktor der übergeordneten Klasse. Dies ist auch ein kleiner Tipp beim Lesen des Quellcodes.

Also müssen wir uns zunächst den Konstruktor dieser Klasse ansehen.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Architekturfunktion

Wie Sie im obigen Bild sehen können, wird hier die Abhängigkeitsinjektion verwendet, also Connection ist ein Objekt und gleichzeitig der sogenannte Connector im Framework. Connection就是一个对象,并且也是框架中所谓的连接器。

所以说这个Connection对象就是下图打印出来的。

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

连接器的对象打印结果

根据上图得知使用的类文件应该就是thinkdbconnectorMysql那么就会执行这个类里边的getLastSql

Also sagen Sie das

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

🎜🎜Das Objektdruckergebnis des Connectors🎜🎜🎜Gemäß dem obigen Bild wissen wir, dass die verwendete Klassendatei thinkdbconnectorMysql dann der getLastSql Methode. 🎜🎜Aber wenn Sie zur Ausführung dieser Klasse kommen, werden Sie feststellen, dass es in dieser Klasse überhaupt keine solche Methode gibt. 🎜

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Vererbungsbeziehung

Gemäß der Vererbungsbeziehung im Bild oben wissen wir, dass sich diese Methode in thinkphp/library/think/db/Connection.phpdieser Klassendatei befindet.

Das Bild unten zeigt den Ausführungsprozess dieser Methode. Sie können sehen, dass es zwei Parameter gibt, aber ich bin immer noch verwirrt, was diese beiden Parameter sind.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Holen Sie sich die SQL-Anweisung der neuesten Abfrage

Entsprechend der Codeverfolgung erläutern wir kurz die beiden Parameter, die im Bild oben angezeigt werden

  • $this->queryStr当前SQL指令
  • $this->bind 绑定参数

追踪$this->queryStr这个属性值

走到这里估计有点蒙了吧!对于这个值有点确定不了了,指定不是靠打印可以获取到结果的。

当然还有另一种办法就是进行debug来断点调试。

但是既然咔咔带大家看源码呢!就不会用上边的俩种方式,会直接从源码中找到蛛丝马迹。

根据咔咔上边给提供的案例,执行的最后一步就是find方法,这个方法也是在thinkphp/library/think/db/Connection.php

$this->bind 绑定参数

追踪$this->queryStr这个属性值🎜

中找到蛛丝马迹。🎜

thinkphp/library/think/db/Connection.php

这个类里边,寻找单条记录。🎜

Dann werden wir mit dieser Methode ein wenig suchen. Der Kaka wurde hier für alle eingekreist, das ist der Ort, der im Bild unten von Kaka eingekreist ist.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

Abfrage ausführen

Gemäß den Codekommentaren von Kaka im Bild oben ist der erste Parameter die generierte SQL-Anweisung und werfen wir einen Blick auf diese Methode wird immer noch in dieser Klasse sein thinkphp/library/think/db/Connection.phpDiese Datei implementiert query Methode. thinkphp/library/think/db/Connection.php这个文件中实现query方法。

在这个方法中一眼就可以看见对于这个queryStr

Sie können in dieser Methode auf einen Blick sehen, dass für diesen queryStr besteht darin, diesem Attribut direkt einen Wert zuzuweisen, was bedeutet, dass der Wert dieses Attributs die SQL-Anweisung ist, die von der vorherigen SQL-Anweisung generiert wurde.

Die Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet

🎜
Führen Sie die Abfrage aus und geben Sie den Datensatz zurück

Sagen Sie also Folgendes:getLastSql ruft die vor dieser Anweisung ausgeführte SQL-Anweisung ab und kann nur die zuletzt ausgeführte SQL-Anweisung abrufen. getLastSql获取的就是在这个语句之前执行的SQL语句,也只能获取出最近执行的那个SQL语句。

以上就是关于getLastSql

Beim Oben geht es umZusammenfassung

Bis zu diesem Punkt endet hier die Analyse der Betriebsszenarien der Db-Klasse in der Datenbank und der Kombination von Konnektoren, Abfragern und Generatoren.

Hier verwendet Kaka hauptsächlich zwei Fälle zur Ausführung, der erste ist der native Fall und der zweite der rahmengekapselte Fall.

Wir haben diese beiden Fälle verwendet, um eine eingehende Analyse des Quellcodes durchzuführen, aber das Dokument enthält viele Implementierungsmethoden. Für andere Methoden müssen Sie nur den Tipps von Kaka folgen und ihn dann Stück für Stück analysieren. 🎜

Es ist nicht erforderlich, alle Methoden auszuführen, es ist die oben analysierte Methode, die ebenfalls sehr einfach ist.

Abschließend habe ich gezeigt, wie man getLastSql, um die zuletzt ausgeführte SQL-Anweisungsabfrage abzurufen. Das Hauptimplementierungsprinzip besteht darin, dass Sie, wenn die Db-Klasse die Datenbank betreibt, unabhängig davon, ob Sie die Suchmethode oder die Auswahlmethode verwenden, letztendlich zu wechseln eine Methode, nämlich die Abfragemethode. getLastSql来获取最后一次执行的SQL语句查询,这里的实现原理主要就是在Db类操作数据库时,不管是使用find方法还是select方法最终都会走向一个方法那就是query方法。

同样在这个方法中存在一个属性值queryStr,也就是在这个时候将SQL语句赋值进去的,然后在使用getLastSql这个方法使用queryStr和bind

In dieser Methode gibt es auch einen AttributwertqueryStr, das heißt, die SQL-Anweisung wird zu diesem Zeitpunkt zugewiesen und dann verwendet getLastSqlDiese Methode verwendetqueryStr- und bind-Attribute verbinden SQL, und schließlich wird die SQL-Anweisung zurückgegeben.

Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, an denen Kaka seit seinen Anfängen festgehalten hat. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können. Ich bin Kaka, bis zum nächsten Mal.
🎜

Das obige ist der detaillierte Inhalt vonDie Db-Klassenbibliothek von ThinkPHP wird in Verbindung mit Konnektoren, Abfragen und SQL-Generatoren verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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