【问题标题】:PHP 7 & MSSQL PDO: Calling a stored procedure with input and output paramsPHP 7 & MSSQL PDO:使用输入和输出参数调用存储过程
【发布时间】:2018-08-20 08:09:30
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    数据类型的完整列表:

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

    注意:这是从文档中获取并改编的,但我还没有测试过,但希望至少它能让你朝着正确的方向前进。

    【讨论】:

      【解决方案2】:

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

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2023-04-07
        • 1970-01-01
        • 2021-04-03
        • 2020-04-05
        • 1970-01-01
        相关资源
        最近更新 更多