PHP: Appel à MySQL Procédure Stockée avec à la Fois d'ENTRÉE ET de SORTIE les Paramètres (et non PAS “INOUT”)

De PHP, j'aimerais appeler une procédure stockée dans le serveur MySQL. La procédure prend en entrée des et paramètres de sortie -- pas "INOUT" paramètres.

Pour un exemple simple, dis-je avoir la procédure stockée suivante dans MySQL:

DELIMITER $$

DROP PROCEDURE IF EXISTS `test_proc`$$
CREATE PROCEDURE `test_proc`(
    in input_param_1 int,
    in input_param_2 int,
    in input_param_3 int,
    out output_sum int,
    out output_product int,
    out output_average int
)
BEGIN
    set output_sum = input_param_1 + input_param_2 + input_param_3;
    set output_product = input_param_1 * input_param_2 * input_param_3;
    set output_average = (input_param_1 + input_param_2 + input_param_3) / 3;
END$$

DELIMITER ;

Maintenant, à partir du script PHP/page côté, dire que j'ai les variables suivantes (que nous appellerons "proc variables d'entrée") que je veux donner à manger à la procédure stockée comme entrée paramètres lorsque je l'appelle:

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

Disons que sur le script PHP/page côté j'ai aussi les variables suivantes (que nous appellerons "proc variables de sortie") que je veux donner à manger à la procédure stockée comme sortie paramètres à fixé par de la procédure stockée lorsque je l'appelle:

$procOutput_sum;
$procOutput_product;
$procOutput_average;

Donc, en substance, sur le script PHP/page côté, ce que je veux être en mesure de le faire, dans l'essence (je me rends compte que le code suivant n'est pas valide), est...

call test_proc($procInput1, $procInput2, $procInput3, $procOutput_sum, $procOutput_product, $procOutput_average);

...et, une fois appelé, le code PHP suivant...

echo "Sum: ".$procOutput_sum;
echo "Product: ".$procOutput_product;
echo "Average: ".$procOutput_average;

...doit produire le résultat suivant:

Sum: 1368
Product: 44253432
Average: 456

Une mise en garde est que, si possible, j'aimerais être capable de faire cela à l'aide de la MySQLi de procédure/fonctions de l'interface. Si pas possible, cependant, je peux l'obtenir pour fonctionner est ce que je vais utiliser.

Je programme depuis un certain temps, mais le langage PHP est un relativement nouveau défi pour moi. J'ai trouvé des tonnes de tutoriels sur l'appel de MySQL procédures stockées à partir de PHP. Certains sont des tutoriels sur l'appel de procédures stockées avec entrée paramètres, dont certains sont des tutoriels sur l'appel de procédures stockées avec sortie paramètres, et certains sont des tutoriels sur l'appel de procédures stockées avec inout paramètres. Je n'ai pas trouvé de tutoriels ou des exemples sur l'appel de procédures stockées les deux entrée et les paramètres de sortie dans le même temps, alors que précisément pas à l'aide de "inout" paramètres". J'ai du mal à comprendre comment coder les liaisons de paramètres (par exemple: mysqli_stmt_bind_param et mysqli_stmt_bind_result) et tout fonctionne correctement.

Toute aide sera grandement appréciée et je remercie à l'avance!

OriginalL'auteur John Doe | 2013-06-09