如何在 PHP 中从 MySQL 存储过程检索输出参数?

Susan Sarandon
发布: 2024-11-06 19:13:02
原创
134 人浏览过

How to Retrieve Output Parameters from MySQL Stored Procedures in PHP?

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

在使用 MySQL 存储过程时,经常需要传入和从数据库中检索数据。这就是输入和输出参数发挥作用的地方。但是,同时使用输入和输出参数可能会很困难,尤其是在不使用“INOUT”参数的情况下。

理解过程的输入和输出参数

让我们考虑MySQL 数据库中的示例存储过程:

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
)
登录后复制

此过程需要三个输入参数(input_param_1、input_param_2、input_param_3)和三个输出参数(output_sum、output_product、output_average)。输入参数用于计算输出参数。

使用 MySQLi 绑定输入和输出参数

要使用 MySQLi 从 PHP 调用此存储过程,您需要绑定输入和输出参数。在下面的代码中,我们使用过程接口建立连接,准备存储过程调用,绑定输入参数,执行调用,并从用户变量中检索输出参数:

<?php

$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'];

mysqli_stmt_close($call);
mysqli_close($mysqli);

?>
登录后复制

中上面的代码中,mysqli_prepare函数准备存储过程调用。 mysqli_stmt_bind_param 函数将输入参数绑定到调用。 mysqli_stmt_execute 函数执行调用。

执行存储过程后,我们必须使用单独的 SELECT 语句从用户变量中检索输出参数。这是因为 MySQLi 缺乏对直接检索输出参数的本机支持。

结论

通过了解如何使用 MySQLi 在 MySQL 存储过程中绑定输入和输出参数,您可以可以有效地与您的数据库交互并检索 PHP 应用程序所需的数据。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!