Maison  >  Article  >  base de données  >  A quoi sert MySQL Prepare ?

A quoi sert MySQL Prepare ?

青灯夜游
青灯夜游original
2023-04-18 11:52:511760parcourir

Dans MySQL, l'instruction PREPARE peut utiliser le protocole binaire client/serveur pour transmettre des requêtes contenant des espaces réservés "?" au serveur MySQL ; en utilisant l'instruction PREPARE, vous pouvez exécuter des requêtes avec des espaces réservés pour augmenter la vitesse des requêtes et créer des utilisateurs. " requêtes plus sûres.

A quoi sert MySQL Prepare ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Introduction aux déclarations préparées MySQL

Avant la version 4.1 de MySQL, les requêtes étaient envoyées au serveur MySQL au format texte. Ensuite, le serveur MySQL renvoie les données au client via un protocole texte. MySQL doit analyser entièrement la requête et convertir le jeu de résultats en chaîne avant de le renvoyer au client.

Les protocoles texte ont de sérieux problèmes de performances. Pour résoudre ce problème, MySQL a ajouté une instruction appelée prepare depuis la version 4.1 pour implémenter de nouvelles fonctionnalités. prepare语句的来实现一些新功能。

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

SELECT * 
FROM products 
WHERE productCode = ?;

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

MySQL准备语句用法

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

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

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

A quoi sert 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

L'instruction prepare utilise le protocole binaire client/serveur. Il transmet une requête contenant des espaces réservés (?) au serveur MySQL comme indiqué dans l'exemple suivant :

rrreee Lorsque MySQL exécute cette requête avec une valeur productcode différente, la requête n'a pas besoin d'être entièrement analysé. Par conséquent, cela aide MySQL à exécuter les requêtes plus rapidement, en particulier lorsque MySQL exécute la requête plusieurs fois. Étant donné que l'instruction prepare utilise des espaces réservés (?), cela permet d'éviter les problèmes d'injection SQL, rendant ainsi votre application plus sûre.

Utilisation des instructions préparées MySQL🎜🎜🎜Pour utiliser les instructions préparées MySQL, vous devez utiliser trois autres instructions MySQL comme suit : 🎜
  • 🎜PREPARE🎜 - préparé pour la déclaration d'exécution.
  • 🎜EXECUTE🎜 - Exécute l'instruction définie par l'instruction PREPARE.
  • 🎜DEALLOCATE PREPARE🎜 - Émet une instruction PREPARE.
🎜La figure suivante illustre comment utiliser l'instruction PREPARE : 🎜🎜A quoi sert MySQL Prepare ?🎜

🎜Exemple d'instruction MySQL PREPARE🎜🎜🎜Jetons un coup d'oeil à l'aide de MySQL Exemple d'instruction PREPARE. 🎜rrreee🎜Tout d'abord, utilisez l'instruction PREPARE pour préparer l'instruction à l'exécution. Nous utilisons l'instruction SELECT pour interroger les données produit de la table products en fonction du code produit spécifié. Utilisez ensuite un point d'interrogation (?) comme espace réservé pour le code produit. 🎜🎜Ensuite, une variable de code produit @pc est déclarée et sa valeur est définie sur S10_1678. 🎜🎜Ensuite, utilisez l'instruction EXECUTE pour exécuter l'instruction préparée de la variable de code produit @pc. 🎜🎜Enfin, nous utilisons DEALLOCATE PREPARE pour émettre l'instruction PREPARE. 🎜🎜【Recommandations associées : 🎜tutoriel vidéo mysql🎜】🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn