Maison  >  Article  >  base de données  >  Comment appeler des procédures stockées MySQL avec des paramètres d'entrée et de sortie en PHP ?

Comment appeler des procédures stockées MySQL avec des paramètres d'entrée et de sortie en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-07 00:26:02469parcourir

How to Call MySQL Stored Procedures with Input and Output Parameters in PHP?

Appel de procédures stockées MySQL avec des paramètres d'entrée et de sortie en PHP

Les développeurs rencontrent souvent le besoin d'appeler des procédures stockées à partir de scripts PHP. Les procédures stockées peuvent prendre une combinaison de paramètres d'entrée et de sortie, les paramètres d'entrée fournissant des valeurs à la procédure et les paramètres de sortie recevant des valeurs calculées à partir de la procédure. Cet article se concentre sur l'appel de procédures stockées MySQL qui prennent spécifiquement à la fois des paramètres d'entrée et de sortie, à l'exclusion des paramètres "inout".

Le défi de l'interface MySQLi

Malheureusement, les interfaces procédurales et orientées objet MySQLi manque de prise en charge native des paramètres de procédure stockée de sortie. Pour contourner le problème, vous pouvez utiliser les variables utilisateur MySQL pour recevoir les valeurs de sortie et les récupérer à l'aide d'une instruction SELECT distincte. En implémentant des variables utilisateur et des instructions SELECT, il est possible de gérer efficacement les procédures stockées avec des paramètres d'entrée et de sortie.

Approche procédurale

Considérez le code PHP suivant en utilisant l'interface procédurale MySQLi :

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = mysqli_connect();

$call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)');
mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3);
mysqli_stmt_execute($call);

$select = mysqli_query($mysqli, 'SELECT @sum, @product, @average');
$result = mysqli_fetch_assoc($select);
$procOutput_sum = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

Dans cet exemple, les variables utilisateur MySQL (@sum, @product, @average) sont définies dans la procédure stockée. L'appel à mysqli_query("SELECT @sum, @product, @average") récupère les valeurs définies par la procédure stockée et les affecte aux variables PHP ($procOutput_sum, $procOutput_product, $procOutput_average).

Object- Approche orientée

Alternativement, l'interface MySQLi orientée objet peut être utilisée :

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = new mysqli();

$call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)');
$call->bind_param('iii', $procInput1, $procInput2, $procInput3);
$call->execute();

$select = $mysqli->query('SELECT @sum, @product, @average');
$result = $select->fetch_assoc();
$procOutput_sum = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

L'approche orientée objet suit un modèle similaire, en utilisant la préparation(), la liaison_param(), l'exécution () et query() pour appeler la procédure stockée et récupérer les valeurs de sortie via des variables utilisateur.

En exploitant les variables utilisateur MySQL et les instructions SELECT, les développeurs PHP peuvent appeler efficacement des procédures stockées qui nécessitent à la fois une entrée et une sortie. paramètres. Cette technique fournit une solution de contournement au manque de prise en charge des paramètres de sortie natifs dans l'interface MySQLi.

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