从PHP中的存储过程获取输出

时间:2019-02-08 15:46:29

标签: php sql db2

我现在正在用php调用存储过程,该过程的第三个参数是OUT参数,因此它应该获取输出

运行此命令时:

function createNameRecord($firstName,$lastName){
    try{
        $sql = "CALL schema.CREATE_RECORD(?,?,?)";
        $values = [$firstName,$lastName,$returnID];
        return DB::connection('odbc')->select($sql,$values);
        dd($returnID);
    }catch(Exception $e){
        return false;
    }
}

该过程正常运行并重新加载页面,当我检查数据库时,记录已成功创建。但是,我需要输出变量,它是已创建记录的ID,并且需要将其返回以供随后运行的函数使用。

因此,自此运行以来,成功创建了记录并重新加载了页面,然后如何转储输出$returnID,以便可以验证其是否存储了返回的ID?上面的转储和终止不起作用,可能是因为页面重新加载了。

验证退货ID的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

我是该社区的新手,并不完全知道如何指导您,但是如果您尝试mysqli_real_query()并按照文档所述检索结果,该怎么办:

  

对数据库执行单个查询,其结果可以是   使用mysqli_store_result()检索或存储   mysqli_use_result()函数。

答案 1 :(得分:1)

一旦您的函数看到return,该函数将在该行之后不再执行任何代码。在这种情况下,dd($returnID);将永远不会执行。如果您只是调试,只需删除return,然后让dd()输出/死:

function createNameRecord($firstName,$lastName){
    try{
        $sql = "CALL schema.CREATE_RECORD(?,?,?)";
        $values = [$firstName,$lastName,$returnID];
        DB::connection('odbc')->select($sql,$values);
        dd($returnID);
    }catch(Exception $e){
        return false;
    }
}

在这种情况下,您不必关心返回值(无论调用什么createNameRecord),因为您只希望脚本结束/死亡。

如果仍在重新加载页面,则可能是您的catch语句正在执行,因此您也应该对其进行调试:

function createNameRecord($firstName,$lastName){
    try{
        $sql = "CALL schema.CREATE_RECORD(?,?,?)";
        $values = [$firstName,$lastName,$returnID];
        DB::connection('odbc')->select($sql,$values);
        dd($returnID);
    }catch(Exception $e){
        dd($e);
    }
}