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

问题描述 投票:0回答:2

在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();进行绑定,但是他们没有提到是否以及如何绑定输入以及输出参数。

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

php sql-server stored-procedures pdo php-7
2个回答
0
投票

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

祝好运!


0
投票

您可以在文档页面后面指定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\n & $value";
?>

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

完整的数据类型列表:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.