代码之家  ›  专栏  ›  技术社区  ›  xTheWolf

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

  •  0
  • xTheWolf  · 技术社区  · 6 年前

    在PHP5中,我曾这样绑定参数:

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

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Louis M.    6 年前

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

    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\u类型和长度值(bindParam()中的参数3和4)

    数据类型的完整列表:

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

    注意:这是从文档中摘取并改编的,但我还没有对它进行测试,但希望它至少能为您指明正确的方向。

        2
  •  0
  •   Developer    6 年前

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

    祝你好运