Heim  >  Artikel  >  Datenbank  >  Was nützt MySQL Prepare?

Was nützt MySQL Prepare?

青灯夜游
青灯夜游Original
2023-04-18 11:52:511760Durchsuche

In MySQL kann die PREPARE-Anweisung das Client/Server-Binärprotokoll verwenden, um Abfragen mit Platzhaltern „?“ an den MySQL-Server weiterzuleiten ' fragt sicherer.

Was nützt MySQL Prepare?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Einführung in MySQL Prepared Statements

Vor MySQL Version 4.1 wurden Abfragen im Textformat an den MySQL-Server gesendet. Anschließend sendet der MySQL-Server die Daten per Textprotokoll an den Client zurück. MySQL muss die Abfrage vollständig analysieren und den Ergebnissatz in einen String konvertieren, bevor er ihn an den Client zurückgibt.

Textprotokolle weisen schwerwiegende Leistungsprobleme auf. Um dieses Problem zu lösen, hat MySQL seit Version 4.1 eine Anweisung namens prepare hinzugefügt, um einige neue Funktionen zu implementieren. prepare语句的来实现一些新功能。

prepare语句利用客户端/服务器二进制协议。 它将包含占位符(?)的查询传递给MySQL服务器,如下例所示:

SELECT * 
FROM products 
WHERE productCode = ?;

当MySQL使用不同的productcode值执行此查询时,不必完全解析查询。 因此,这有助于MySQL更快地执行查询,特别是当MySQL多次执行查询时。 因为prepare语句使用占位符(?),这有助于避免SQL注入的问题,从而使您的应用程序更安全一些。

MySQL准备语句用法

为了使用MySQL准备语句,您需要使用其他三个MySQL语句如下:

  • PREPARE - 准备执行的声明。
  • EXECUTE  - 执行由PREPARE语句定义的语句。
  • DEALLOCATE PREPARE - 发布PREPARE语句。

下图说明了如何使用PREPARE语句:

Was nützt MySQL Prepare?

MySQL PREPARE语句示例

我们来看一下使用MySQL PREPARE语句的例子。

PREPARE stmt1 FROM 'SELECT productCode, productName
                    FROM products
                    WHERE productCode = ?';

SET @pc = 'S10_1678';
EXECUTE stmt1 USING @pc;

DEALLOCATE PREPARE stmt1;

首先,使用PREPARE语句准备执行语句。我们使用SELECT语句根据指定的产品代码从products表查询产品数据。然后再使用问号(?)作为产品代码的占位符。

接下来,声明了一个产品代码变量@pc,并将其值设置为S10_1678

然后,使用EXECUTE语句来执行产品代码变量@pc的准备语句。

最后,我们使用DEALLOCATE PREPARE来发布PREPARE

Die prepare-Anweisung nutzt das Client/Server-Binärprotokoll. Es übergibt eine Abfrage mit Platzhaltern (?) an den MySQL-Server, wie im folgenden Beispiel gezeigt:

rrreee Wenn MySQL diese Abfrage mit einem anderen productcode-Wert ausführt, wird die Abfrage muss nicht vollständig analysiert werden. Dadurch kann MySQL Abfragen schneller ausführen, insbesondere wenn MySQL die Abfrage mehrmals ausführt. Da die prepare-Anweisung Platzhalter (?) verwendet, hilft dies, SQL-Injection-Probleme zu vermeiden und Ihre Anwendung sicherer zu machen.

Verwendung vorbereiteter MySQL-Anweisungen🎜🎜🎜Um MySQL-vorbereitete Anweisungen verwenden zu können, müssen Sie drei weitere MySQL-Anweisungen wie folgt verwenden: 🎜
  • 🎜PREPARE🎜 - für die Ausführungserklärung vorbereitet.
  • 🎜EXECUTE🎜 – Führt die durch die PREPARE-Anweisung definierte Anweisung aus.
  • 🎜DEALLOCATE PREPARE🎜 – Gibt eine PREPARE-Anweisung aus.
🎜Die folgende Abbildung veranschaulicht die Verwendung der PREPARE-Anweisung: 🎜🎜Was nützt MySQL Prepare?🎜

🎜Beispiel für eine MySQL PREPARE-Anweisung🎜🎜🎜Lassen Sie uns einen Blick darauf werfen bei der Verwendung von MySQL Beispiel einer PREPARE-Anweisung. 🎜rrreee🎜Verwenden Sie zunächst die PREPARE-Anweisung, um die Anweisung für die Ausführung vorzubereiten. Wir verwenden die SELECT-Anweisung, um Produktdaten aus der products-Tabelle basierend auf dem angegebenen Produktcode abzufragen. Verwenden Sie dann ein Fragezeichen (?) als Platzhalter für den Produktcode. 🎜🎜Als nächstes wird eine Produktcode-Variable @pc deklariert und ihr Wert auf S10_1678 gesetzt. 🎜🎜Dann verwenden Sie die Anweisung EXECUTE, um die vorbereitete Anweisung der Produktcode-Variable @pc auszuführen. 🎜🎜Schließlich verwenden wir DEALLOCATE PREPARE, um die PREPARE-Anweisung auszugeben. 🎜🎜【Verwandte Empfehlung: 🎜MySQL-Video-Tutorial🎜】🎜

Das obige ist der detaillierte Inhalt vonWas nützt MySQL Prepare?. 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