Ich möchte eine gespeicherte Prozedur in MySQL von PHP aus aufrufen. Der Prozess benötigt Eingabe- und Ausgabeparameter – nicht „INOUT“-Parameter .
Um ein einfaches Beispiel zu geben: Angenommen, ich habe die folgende gespeicherte Prozedur in 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 ;
Nehmen wir nun von Seiten des PHP-Skripts/der PHP-Seite an, ich habe die folgenden Variablen (nennen wir sie „Proc-Eingabevariablen“) und möchte sie als Eingabeparameter für die gespeicherte Prozedur bereitstellen, wenn ich sie aufrufe:
$procInput1 = "123"; $procInput2 = "456"; $procInput3 = "789";Angenommen, ich habe auf der PHP-Skript-/Seitenseite auch die folgenden Variablen (nennen wir sie „Proc-Ausgabevariablen“) und ich möchte sie als
Ausgabeparameter für die gespeicherte Prozedur bereitstellen, wenn ich sie aufrufe, und zwar durch die gespeicherte Prozedur Einstellungen :
$procOutput_sum;
$procOutput_product;
$procOutput_average;
Also, im Wesentlichen, was ich tun möchte, im Wesentlichen
, in Bezug auf PHP-Skripte/Seiten, ist...
call test_proc($procInput1, $procInput2, $procInput3, $procOutput_sum, $procOutput_product, $procOutput_average);
...Nach dem Aufruf erscheint der folgende PHP-Code...< /p>
echo "Sum: ".$procOutput_sum; echo "Product: ".$procOutput_product; echo "Average: ".$procOutput_average;
...sollte die folgende Ausgabe erzeugen:
Sum: 1368 Product: 44253432 Average: 456
Beachten Sie, dass ich dies nach Möglichkeit gerne mit MySQLi-Prozeduren
Funktionen/Schnittstellen tun würde. Wenn es nicht möglich ist, verwende ich eine Methode, damit es funktioniert.Ich programmiere schon eine Weile, aber die PHP-Sprache ist für mich ein relativ neues Unterfangen. Ich habe unzählige Tutorials zum Aufruf gespeicherter MySQL-Prozeduren aus PHP gefunden. Einige sind Tutorials zum Aufrufen gespeicherter Prozeduren mit Eingabeparametern, andere sind Tutorials zum Aufrufen gespeicherter Prozeduren mit
Ausgabeparametern und einige verwendenInout-Parameter. Ich habe keine Tutorials oder Beispiele zum Aufrufen einer gespeicherten Prozedur gefunden, die gleichzeitig gleichzeitig Eingabe- und Ausgabeparameter verwendet, ohne ausdrücklich nicht <调用存储过程的教程/strong> die „inputout“-Parameter zu verwenden. Ich kann nicht herausfinden, wie ich Parameterbindungen (z. B. mysqli_stmt_bind_param und mysqli_stmt_bind_result) codieren und zum Laufen bringen kann. Jede Hilfe wäre sehr dankbar, vielen Dank im Voraus!
不幸的是,MySQLi 没有对输出存储过程参数的任何本机支持;必须改为输出到 MySQL 用户变量,然后使用单独的
SELECT 获取值
声明。使用程序接口:
或者,使用面向对象的接口: