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
Vous devez vous connecter pour publier un commentaire.
Malheureusement, MySQLi ne pas ont un support natif pour la sortie des paramètres de la procédure stockée; on doit, au contraire, sortie en MySQL variables utilisateur et de récupérer les valeurs à l'aide d'un distinct
SELECT
déclaration.À l'aide de l'interface procédurale:
Ou, à l'aide d'une interface orientée objet:
Un style procédural version, ce serait bien.
Assurément, il n'est pas difficile de le convertir?
pas pour vous, peut-être, mais je pense que ça pourrait aider beaucoup de gens.
fine, que ce soit. Voir ci-dessus.
OriginalL'auteur eggyal