首页 > 数据库 > mysql教程 > 如何在PHP中调用带有输入和输出参数的MySQL存储过程?

如何在PHP中调用带有输入和输出参数的MySQL存储过程?

Mary-Kate Olsen
发布: 2024-11-07 04:09:03
原创
223 人浏览过

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

在 PHP 中调用带有输入和输出参数(不是“INOUT”参数)的 MySQL 存储过程

简介:

从 PHP 调用 MySQL 存储过程是一项常见任务,但在处理输入和输出参数时,可能会更加复杂。本文将指导您完成使用 MySQLi 的过程接口进行此类调用所需的具体方法。

存储过程配置:

考虑 MySQL 中的以下存储过程:

DELIMITER $$
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 ;
登录后复制

绑定输入和输出参数:

要调用存储过程并指定输入和输出参数,请使用 mysqli_stmt_bind_param() 函数:

mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3);
登录后复制

其中 $procInput1、$procInput2 和 $procInput3 是输入参数。

要检索输出参数,您需要在存储过程中使用用户变量,然后在之后获取它们的值执行调用:

$select = mysqli_query($mysqli, 'SELECT @sum, @product, @average');
$result = mysqli_fetch_assoc($select);
登录后复制

其中 $select 是一个查询,用于检索存储过程设置的用户变量(@sum、@product、@average)。

代码示例:

这是一个完整的代码示例:

$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'];
登录后复制

按照以下步骤,您可以成功调用需要输入和输出参数的 MySQL 存储过程。

以上是如何在PHP中调用带有输入和输出参数的MySQL存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板