Maison > Article > base de données > Comment utiliser les procédures stockées en php+mysql
MySQL et PHP sont deux technologies couramment utilisées dans le développement de sites Web. Parmi eux, MySQL est un système de gestion de base de données, responsable du stockage et de la gestion des données ; PHP est un langage de script côté serveur, utilisé pour générer le contenu des pages Web. Dans certains scénarios commerciaux complexes, des procédures stockées doivent être utilisées pour effectuer certaines opérations de données spécifiques. Cet article présentera l'utilisation des procédures stockées de MySQL et PHP.
1. Procédures stockées MySQL
Les procédures stockées MySQL sont un ensemble d'instructions SQL précompilées qui peuvent être utilisées pour exécuter une logique métier spécifique. Par rapport à l'écriture d'une logique métier similaire au niveau de la couche application, l'utilisation de procédures stockées peut déplacer cette logique vers le niveau de la base de données, économisant ainsi le temps de transmission du réseau et améliorant les performances. Ce qui suit est une simple procédure stockée MySQL :
CREATE PROCEDURE `my_proc`(IN `p_id` INT, OUT `p_name` VARCHAR(20)) BEGIN SELECT `name` INTO `p_name` FROM `users` WHERE `id` = `p_id`; END
Cette procédure stockée accepte un paramètre entier p_id
et attribue le nom de l'utilisateur correspondant au paramètre de sortie p_name
. Lors de l'appel de cette procédure stockée au niveau de la couche application, il vous suffit de passer le paramètre p_id
pour obtenir le nom de l'utilisateur correspondant. L'avantage d'utiliser une procédure stockée est que la prochaine fois que la procédure stockée est appelée, le moteur MySQL a déjà compilé la procédure en code machine, et il n'est pas nécessaire d'analyser à nouveau l'instruction SQL, donc l'efficacité d'exécution est plus élevée. p_id
,并将对应用户的姓名赋值给p_name
输出参数。在应用层调用该存储过程时,只需要传递参数p_id
,即可获得对应用户的姓名。使用存储过程的好处在于,下次调用该存储过程时,MySQL引擎已经将该过程编译为机器码,无需再次解析SQL语句,因此执行效率更高。
二、PHP调用MySQL存储过程
在PHP开发中,使用存储过程可以大大减少数据库操作的时间。下面是调用上述MySQL存储过程的PHP代码:
<?php // 连接MySQL数据库 $db = new mysqli('localhost', 'user', 'password', 'test'); if ($db->connect_errno) { die('Connect Error:' . $db->connect_error); } // 准备存储过程的参数和调用语句 $id = 1; $p_name = ''; $sql = "CALL my_proc($id, @p_name)"; // 执行调用语句 if ($db->multi_query($sql)) { // 获取输出参数 $db->next_result(); $result = $db->query("SELECT @p_name AS `name`"); $row = $result->fetch_assoc(); $p_name = $row['name']; // 输出查询结果 echo "User $id's name is $p_name"; } else { echo "Call Procedure Error:" . $db->error; } // 关闭数据库连接 $db->close(); ?>
在这段PHP代码中,首先连接MySQL数据库,随后准备存储过程的输入参数和调用语句。由于调用存储过程产生的查询结果是通过OUT参数输出的,因此需要执行多个SQL语句才能获取查询结果:首先执行调用语句,随后执行SELECT语句,最后获取输出参数p_name
rrreee
Dans ce code PHP, la base de données MySQL est d'abord connectée, puis les paramètres d'entrée et les instructions d'appel de la procédure stockée sont préparés. Étant donné que les résultats de la requête générés par l'appel de la procédure stockée sont générés via le paramètre OUT, plusieurs instructions SQL doivent être exécutées pour obtenir les résultats de la requête : exécutez d'abord l'instruction appelante, puis exécutez l'instruction SELECT et enfin obtenez le paramètre de sortiep_nom
. Une fois l'appel terminé, fermez simplement la connexion à la base de données. 🎜🎜Résumé🎜🎜Dans une logique métier complexe, l'utilisation de procédures stockées MySQL peut déplacer une partie de la logique vers le niveau de la base de données, améliorant ainsi l'efficacité opérationnelle et la vitesse de réponse du système. Lorsque PHP appelle une procédure stockée MySQL, vous devez faire attention aux paramètres d'entrée et aux paramètres de sortie de la procédure stockée et exécuter plusieurs instructions SQL pour obtenir les résultats de la requête. De cette façon, dans la pratique, la combinaison des procédures stockées MySQL et du développement PHP peut gérer les opérations de base de données plus facilement et améliorer l'efficacité. 🎜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!