Получение вывода из хранимой процедуры в PHP - PullRequest
0 голосов
/ 08 февраля 2019

Я вызываю хранимую процедуру в 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;
    }
}

Процедура выполняется правильно и перезагружает страницу, и когда я проверяю базу данных, запись успешно создается.Тем не менее, мне нужна выходная переменная, которая является идентификатором созданной записи, и мне нужно, чтобы она возвращалась для функции, которая запускается впоследствии.

ТАК, поскольку она запускается, успешно создает запись и перезагружает страницу, тогда как я могусбросить вывод $returnID, чтобы я мог убедиться, что он хранит мой возвращенный идентификатор?Вышеуказанный дамп и штамп не работает, возможно, из-за перезагрузки страницы.

Какой лучший способ проверить идентификатор возврата?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Как только ваша функция увидит return, функция больше не будет выполнять код после этой строки.В этом случае dd($returnID); никогда не будет выполнено.Если вы просто отлаживаете, просто удалите return и позвольте 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;
    }
}

В этом случае вам не нужно возвращаемое значение (что бы ни вызывало 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);
    }
}
0 голосов
/ 08 февраля 2019

Я новичок в сообществе и не знаю, как вас вести, но что если вы попробовали mysqli_real_query () и получили результаты, как указано в документе:

Выполняет один запрос к базе данных, результат которой затем можно получить или сохранить с помощью функций mysqli_store_result () или mysqli_use_result ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...