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

时间:2018-03-12 10:28:42

标签: php sql-server stored-procedures pdo php-7

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

祝你好运!

答案 1 :(得分:0)

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

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

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