PHP 7和MSSQL PDO:使用输入和输出参数调用存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 7和MSSQL PDO:使用输入和输出参数调用存储过程相关的知识,希望对你有一定的参考价值。

php5中,我曾经像这样绑定Params:

mssql_bind($stmt,'@BIAC_MEMBER',$inMemberID,SQLVARCHAR); //Input mssql_bind($stmt,'@BIAC_RESULT',$outResult,SQLVARCHAR,true); //Output

由于mssql_*在PHP7中删除了,你现在需要使用PDO我改变了我的连接:

$stmt = $conn->prepare("CALL MyStoredProc(?, ?, ?, ?)");

根据PHP文档,您可以使用$stmt->bindParam();进行绑定,但是他们没有提到是否以及如何绑定输入以及输出参数。

是否可以指定多个输入/输出参数,如果是,如何?

答案

PDO你可以使用bindParam。这是一个如何使用bindParam的完整示例。 https://www.ibm.com/support/knowledgecenter/SSSNY3_10.1.0/com.ibm.swg.im.dbclient.php.doc/doc/t0023502.html

祝好运!

另一答案

您可以在文档页面后面指定params:

http://php.net/manual/en/pdo.prepared-statements.php

http://php.net/manual/en/pdostatement.bindparam.php

即使用以下代码:

<?php
$stmt = $dbh->prepare("CALL MyStoredProc(?, ?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$value = 'hello';
$stmt->bindParam(2, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

// call the stored procedure
$stmt->execute();

print "procedure returned $return_value
 & $value";
?>

这有一个输出参数和一个输入/输出参数,因此应该很容易适应您的需要。它们的关键是简单地设置正确的data_type和length值(bindParam()中的参数3和4)

完整的数据类型列表:

http://php.net/manual/en/pdo.constants.php

注意:这是从文档中获取并进行了调整,但我没有对其进行过测试,但希望它至少可以帮助您找到正确的方向。

以上是关于PHP 7和MSSQL PDO:使用输入和输出参数调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章

运维 | CentOS 7 下给 PHP 安装 MSSQL - PDO拓展

如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

如何在 Windows 开发环境中在 PHP 中使用 PDO 和 MSSQL?

PHP MySQL PDO 绑定输入/输出相同参数

PHP PDO 无法获取 OUT 参数值

OpenLiteSpeed 上的 MSSQL PDO?