简体   繁体   中英

Getting output from stored procedure in PHP

I'm calling a stored procedure in php right now, and the third parameter of the procedure is an OUT param so it should be getting the output

When I run this:

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;
    }
}

The procedure runs properly and reloads the page, and when I check the database then the record was successfully created. However, I need the output variable which is the ID of the created record and I need it returned for a function that runs afterwards.

SO since this runs, successfully creates the record and reloads the page then how can I dump the output $returnID so that I can verify that it's storing my returned ID? The dump and die above doesn't work, potentially because of the page reload.

What's the best way to verify the return ID?

I am new to the community and don't fully know how to guide you but what if you tried mysqli_real_query() and retrieved the results as the doc says:

Executes a single query against the database whose result can then be retrieved or stored using the mysqli_store_result() or mysqli_use_result() functions.

As soon as your function sees return , the function will no longer execute any code after that line. In this case dd($returnID); will never get executed. If you're simply debugging, just remove return , and let dd() output/die:

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;
    }
}

In this case, you're not caring about the return value (Whatever is calling createNameRecord ), as you just want your script to end/die.

If it's still reloading the page, then your catch statement is likely being executed, and you should debug that as well:

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);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM